PHP删除数组中的特定元素的代码

2015-01-24信息快讯网

我们知道,PHP没有提供专门删除一个特定数组元素的方法。但是可以通过unset()函数来完成这种要求

比如下面的程序:
 
<?php 

$arr = array('apple','banana','cat','dog'); 

unset($arr[2]); 
print_r($arr); 

?> 

程序运行结果:
 Array ( [0] => apple [1] => banana [3] => dog ) 

但是这种方法的最大缺点是没有重建数组索引,就是说,数组的第三个元素没了。
经过查资料后,原来PHP提供了这个功能,只不过很间接。这个函数是array_splice()。
为了使用方便,我封装成了一个函数,方便大家使用:
 
<?php 

function array_remove(&$arr, $offset) 
{ 
array_splice($arr, $offset, 1); 
} 

$arr = array('apple','banana','cat','dog'); 

array_remove($arr, 2); 
print_r($arr); 
?> 

经过测试可以知道,2的位置这个元素被真正的删除了,并且重新建立了索引。
程序运行结果:
 
Array ( [0] => apple [1] => banana [2] => dog ) 

PHP array_splice() 函数
array_splice() 函数与 array_slice() 函数类似,选择数组中的一系列元素,但不返回,而是删除它们并用其它值代替。如果提供了第四个参数,则之前选中的那些元素将被第四个参数指定的数组取代。
最后生成的数组将会返回。
语法:array_splice(array,offset,length,array)
array:必需。规定数组。
offset:必需。数值。如果 offset 为正,则从输入数组中该值指定的偏移量开始移除。如果 offset 为负,则从输入数组末尾倒数该值指定的偏移量开始移除。
length:可选。数值。如果省略该参数,则移除数组中从 offset 到 结尾的所有部分。如果指定了 length 并且为正值,则移除这么多元素。如果指定了 length 且为负值,则移除从 offset 到数组末尾倒数 length 为止中间所有的元素。
array:被移除的元素由此数组中的元素替代。如果没有移除任何值,则此数组中的元素将插入到指定位置。
如果函数没有删除任何元素 (length=0),则替代数组将从 start 参数的位置插入。
示例1:
 
<?php 
$a1=array(0=>"Dog",1=>"Cat",2=>"Horse",3=>"Bird"); 
$a2=array(0=>"Tiger",1=>"Lion"); 
array_splice($a1,0,2,$a2); 
print_r($a1); 
?> 
//output : Array ( [0] => Tiger [1] => Lion [2] => Horse [3] => Bird ) 

示例2:
 
<?php 
$a1=array(0=>"Dog",1=>"Cat",2=>"Horse",3=>"Bird"); 
$a2=array(0=>"Tiger",1=>"Lion"); 
print_r(array_splice($a1,0,2,$a2)); 
?> 
//output : Array ( [0] => Dog [1] => Cat ) 

示例3:
 
<?php 
// length 参数设置为 0 
$a1=array(0=>"Dog",1=>"Cat"); 
$a2=array(0=>"Tiger",1=>"Lion"); 
array_splice($a1,1,0,$a2); 
print_r($a1); 
?> 
//output : Array ( [0] => Dog [1] => Tiger [2] => Lion [3] => Cat ) 
PHP array_multisort() 函数的深入解析
PHP操作MongoDB GridFS 存储文件的详解
解析PHP中常见的mongodb查询操作
PHP 解决session死锁的方法
解析PHP可变函数的经典用法
探讨Smarty中如何获取数组的长度以及smarty调用php函数的详解
解析PHP中数组元素升序、降序以及重新排序的函数
数组与类使用PHP的可变变量名需要的注意的问题
判断php数组是否为索引数组的实现方法
如何判断php数组的维度
解析php二分法查找数组是否包含某一元素
PHP获取数组中某元素的位置及array_keys函数应用
php从数组中随机抽取一些元素的代码
php比较多维数组中值的大小排序实现代码
PHP输出数组中重名的元素的几种处理方法
php 对输入信息的进行安全过滤的函数代码
PHP安全性漫谈
PHP连接SQLSERVER 注意事项(附dll文件下载)
php数组中删除元素的实现代码
php数据结构与算法(PHP描述) 查找与二分法查找
通过PHP的内置函数,通过DES算法对数据加密和解密
深入理解PHP之数组(遍历顺序) Laruence原创
逆序二维数组插入一元素的php代码
PHP 将逗号、空格、回车分隔的字符串转换为数组的函数
一个显示某段时间内每个月的方法 返回由这些月份组成的数组
php 删除一个数组中的某个值.兼容多维数组!
Linux fgetcsv取得的数组元素为空字符串的解决方法
php array_filter除去数组中的空字符元素
PHP 多维数组的排序问题 根据二维数组中某个项排序
php数组函数序列之array_pop() - 删除数组中的最后一个元素
©2014-2024 dbsqp.com