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 相关文章推荐
php 数学运算验证码实现代码
Oct 11 PHP
基于PHP常用函数的用法详解
May 10 PHP
php使用GeoIP库实例
Jun 27 PHP
PHP上传文件时自动分配路径的方法
Jan 09 PHP
php导入excel文件到mysql数据库的方法
Jan 14 PHP
Laravel 5 框架入门(四)完结篇
Apr 09 PHP
php集成套件服务器xampp安装使用教程(适合第一次玩PHP的新手)
Jun 03 PHP
php+ajax实现无刷新分页
Nov 18 PHP
WordPress导航菜单的滚动和淡入淡出效果的实现要点
Dec 14 PHP
php文档工具PHP Documentor安装与使用方法
Jan 25 PHP
phpinfo()中Loaded Configuration File(none)的解决方法
Jan 16 PHP
浅谈php调用python文件
Mar 29 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的autoload机制的实现解析
2012/09/15 PHP
浅谈php正则表达式中的非贪婪模式匹配的使用
2014/11/25 PHP
PHP实现自动对图片进行滚动显示的方法
2015/03/12 PHP
PHP入门教程之图像处理技巧分析
2016/09/11 PHP
Yii 2.0自带的验证码使用经验分享
2017/06/19 PHP
JavaScript高级程序设计 客户端存储学习笔记
2011/09/10 Javascript
javascript打印大全(打印页面设置/打印预览代码)
2013/03/29 Javascript
JavaScript将页面表格导出为Excel的具体实现
2013/12/27 Javascript
nodejs创建web服务器之hello world程序
2015/08/20 NodeJs
JS实用技巧小结(屏蔽错误、div滚动条设置、背景图片位置等)
2016/06/16 Javascript
基于bootstrap实现广告轮播带图片和文字效果
2016/07/22 Javascript
JS闭包用法实例分析
2017/03/27 Javascript
nodejs 终端打印进度条实例代码
2017/04/22 NodeJs
浅谈在vue项目中如何定义全局变量和全局函数
2017/10/24 Javascript
Angularjs按需查询实例代码
2017/10/30 Javascript
vue使用ajax获取后台数据进行显示的示例
2018/08/09 Javascript
3分钟了解vue数据劫持的原理实现
2019/05/01 Javascript
Vue.js@2.6.10更新内置错误处机制Fundebug同步支持相应错误监控
2019/05/13 Javascript
element-ui表格合并span-method的实现方法
2019/05/21 Javascript
[58:15]2018DOTA2亚洲邀请赛 4.1 小组赛 A组 NB vs Liquid
2018/04/02 DOTA
python操作sqlite的CRUD实例分析
2015/05/08 Python
Python 使用threading+Queue实现线程池示例
2019/12/21 Python
Python如何发送与接收大型数组
2020/08/07 Python
python -v 报错问题的解决方法
2020/09/15 Python
捷克鲜花配送:Florea.cz
2018/10/29 全球购物
葬礼司仪主持词
2014/03/31 职场文书
企业员工薪酬方案
2014/06/04 职场文书
2014年教研工作总结
2014/12/06 职场文书
工程技术员岗位职责
2015/04/11 职场文书
2015年导购员工作总结
2015/04/25 职场文书
交心谈心活动总结
2015/05/11 职场文书
2015年税务稽查工作总结
2015/05/26 职场文书
python 逐步回归算法
2021/04/06 Python
Python异常类型以及处理方法汇总
2021/06/05 Python
你知道Java Spring的两种事务吗
2022/03/16 Java/Android
vue整合百度地图显示指定地点信息
2022/04/06 Vue.js