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


Posted in PHP onJune 28, 2012

比如下面的程序:

<?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 相关文章推荐
mysql 字段类型说明
Apr 27 PHP
PHP5.2下chunk_split()函数整数溢出漏洞 分析
Jun 06 PHP
用PHP进行MySQL删除记录操作代码
Jun 07 PHP
php中去除所有js,html,css代码
Oct 12 PHP
完美解决:Apache启动问题―(OS 10022)提供了一个无效的参数
Jun 08 PHP
利用php递归实现无限分类 格式化数组的详解
Jun 08 PHP
php实现快速排序的三种方法分享
Mar 12 PHP
PHP中实现Bloom Filter算法
Mar 30 PHP
PHP-FPM之Chroot执行环境详解
Aug 03 PHP
PHP实现GIF图片验证码
Nov 04 PHP
Joomla开启SEF的方法
May 04 PHP
php版阿里云OSS图片上传类详解
Dec 01 PHP
PHP安全性漫谈
Jun 28 #PHP
PHP连接SQLSERVER 注意事项(附dll文件下载)
Jun 28 #PHP
深入了解 register_globals (附register_globals=off 网站打不开的解决方法)
Jun 27 #PHP
php数组中删除元素的实现代码
Jun 22 #PHP
php数据结构与算法(PHP描述) 查找与二分法查找
Jun 21 #PHP
通过PHP的内置函数,通过DES算法对数据加密和解密
Jun 21 #PHP
php数据结构与算法(PHP描述) 快速排序 quick sort
Jun 21 #PHP
You might like
php 时间计算问题小结
2009/01/04 PHP
php 短链接算法收集与分析
2011/12/30 PHP
php身份证号码检查类实例
2015/06/18 PHP
php版阿里大于(阿里大鱼)短信发送实例详解
2016/11/30 PHP
jquery 学习之二 属性(类)
2010/11/25 Javascript
jquery如何通过name名称获取当前name的value值
2013/12/20 Javascript
js中数组结合字符串实现查找(屏蔽广告判断url等)
2016/03/30 Javascript
jQuery的实例及必知重要的jQuery选择器详解
2016/05/20 Javascript
JS产生随机数的几个用法详解
2016/06/22 Javascript
jQuery ajax调用后台aspx后台文件的两种常见方法(不是ashx)
2016/06/28 Javascript
基于jQuery的select下拉框选择触发事件实例分析
2016/11/18 Javascript
js实现滑动到页面底部自动加载更多功能
2017/02/15 Javascript
js实现自定义进度条效果
2017/03/15 Javascript
10道典型的JavaScript面试题
2017/03/22 Javascript
Angular2下使用pdf插件的方法详解
2017/04/29 Javascript
js图片轮播插件的封装
2017/07/21 Javascript
微信小程序如何获取用户信息
2018/01/26 Javascript
解决vue 绑定对象内点击事件失效问题
2018/09/05 Javascript
js实现动态添加上传文件页面
2018/10/22 Javascript
微信小程序new Date()方法失效问题解决方法
2019/07/29 Javascript
Vue实现点击箭头上下移动效果
2020/06/11 Javascript
小程序表单认证布局及验证详解
2020/06/19 Javascript
[13:16]INFAMOUS vs VGJ T BO3
2018/06/07 DOTA
[03:24][TI9纪实] Dota奶爸
2019/08/22 DOTA
星球大战与Python之间的那些事
2016/01/07 Python
Python用imghdr模块识别图片格式实例解析
2018/01/11 Python
PyTorch快速搭建神经网络及其保存提取方法详解
2018/04/28 Python
Python机器学习之scikit-learn库中KNN算法的封装与使用方法
2018/12/14 Python
建筑工程自我鉴定
2013/10/18 职场文书
国际商务系学生个人的自我评价
2013/11/26 职场文书
玩具公司的创业计划书
2013/12/31 职场文书
地道战观后感300字
2015/06/04 职场文书
结婚喜宴迎宾词
2015/08/10 职场文书
2016年优秀团支部事迹材料
2016/02/26 职场文书
《家》读后感:万惜拯救,冷暖自知
2019/09/25 职场文书
少年的你:世界上没有如果,要在第一次就勇敢的反抗
2019/11/20 职场文书