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 相关文章推荐
ASP知识讲座四
Oct 09 PHP
PHP parse_url 一个好用的函数
Oct 03 PHP
PHP5.3.1 不再支持ISAPI
Jan 08 PHP
解析PHP函数array_flip()在重复数组元素删除中的作用
Jun 27 PHP
PHP解码unicode编码的中文字符代码分享
Aug 13 PHP
PHP中数据库单例模式的实现代码分享
Aug 21 PHP
两千行代码的PHP学习笔记汇总
Oct 05 PHP
php生成百度sitemap站点地图类函数实例
Oct 17 PHP
学习php设计模式 php实现抽象工厂模式
Dec 07 PHP
WordPress主题中添加文章列表页页码导航的PHP代码实例
Dec 22 PHP
PHP实现类似题库抽题效果
Aug 16 PHP
一文掌握PHP Xdebug 本地与远程调试(小结)
Apr 23 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访问查询mysql数据的三种方法
2006/10/09 PHP
php数组合并的二种方法
2014/03/21 PHP
PHP中的表达式简述
2016/05/29 PHP
js 分栏效果实现代码
2009/08/29 Javascript
JavaScript 比较时间大小的代码
2010/04/24 Javascript
EXTJS FORM HIDDEN TEXTFIELD 赋值 使用value不好用的问题
2011/04/16 Javascript
HTML上传控件取消选择
2013/03/06 Javascript
JavaScript对象之深度克隆介绍
2014/12/08 Javascript
Js获取当前日期时间及格式化代码
2016/09/17 Javascript
jQuery控制元素隐藏和显示
2017/03/03 Javascript
echarts饼图扇区添加点击事件的实例
2017/10/16 Javascript
Vue底层实现原理总结
2018/02/17 Javascript
在vue中实现点击选择框阻止弹出层消失的方法
2018/09/15 Javascript
详解Nuxt.js 实战集锦
2019/11/19 Javascript
Python 错误和异常小结
2013/10/09 Python
使用grappelli为django admin后台添加模板
2014/11/18 Python
深入浅析Python中join 和 split详解(推荐)
2016/06/30 Python
Python利用matplotlib生成图片背景及图例透明的效果
2017/04/27 Python
django-rest-framework 自定义swagger过程详解
2019/07/18 Python
Django Python 获取请求头信息Content-Range的方法
2019/08/06 Python
解决django xadmin主题不显示和只显示bootstrap2的问题
2020/03/30 Python
Python基于os.environ从windows获取环境变量
2020/06/09 Python
Python测试框架:pytest学习笔记
2020/10/20 Python
Python实现树莓派摄像头持续录像并传送到主机的步骤
2020/11/30 Python
python 基于opencv去除图片阴影
2021/01/26 Python
介绍一下gcc特性
2012/01/20 面试题
Linux上比较文件的命令都有哪些
2012/02/24 面试题
魅力教师事迹材料
2014/01/10 职场文书
一年级语文教学反思
2014/02/13 职场文书
年级组长自我鉴定
2014/02/22 职场文书
放飞梦想演讲稿600字
2014/08/26 职场文书
社团活动总结格式
2014/08/29 职场文书
贪污检举信范文
2015/03/02 职场文书
小学班主任工作随笔
2015/08/15 职场文书
2016党员学习心得体会范文
2016/01/23 职场文书
九年级历史教学反思
2016/02/19 职场文书