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邮件类
Jan 03 PHP
PHP sprintf() 函数的应用(定义和用法)
Jun 29 PHP
Codeigniter上传图片出现“You did not select a file to upload”错误解决办法
Jun 12 PHP
CodeIgniter框架URL路由总结
Sep 03 PHP
php生成百度sitemap站点地图类函数实例
Oct 17 PHP
thinkphp数据查询和遍历数组实例
Nov 28 PHP
PHP_SELF,SCRIPT_NAME,REQUEST_URI区别
Dec 24 PHP
PHP实现分布式memcache设置web集群session同步的方法
Apr 10 PHP
PHP操作redis实现的分页列表,新增,删除功能封装类与用法示例
Aug 04 PHP
浅析php如何实现爬取数据原理
Sep 27 PHP
PHP编程一定要改掉的5个不良习惯
Sep 18 PHP
PHP操作Redis常用命令的实例详解
Dec 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中养成7个面向对象的好习惯
2010/01/28 PHP
详解cookie验证的php应用的一种SSO解决办法
2017/10/20 PHP
自定义Laravel (monolog)日志位置,并增加请求ID的实现
2019/10/17 PHP
phpStorm2020 注册码
2020/09/17 PHP
JavaScript 类似flash效果的立体图片浏览器
2010/02/08 Javascript
jQuery Validation插件remote验证方式的Bug解决
2010/07/01 Javascript
jquery网页回到顶部效果(图标渐隐,自写)
2014/06/16 Javascript
jQuery中noconflict函数的实现原理分解
2015/02/03 Javascript
Javascript中arguments和arguments.callee的区别浅析
2015/04/24 Javascript
CSS javascript 结合实现悬浮固定菜单效果
2015/08/23 Javascript
Vue.JS入门教程之自定义指令
2016/12/08 Javascript
手淘flexible.js框架使用和源代码讲解小结
2018/10/15 Javascript
Vue.js 中的 v-show 指令及用法详解
2018/11/19 Javascript
使用 js 简单的实现 bind、call 、aplly代码实例
2019/09/07 Javascript
JavaScript将数组转换为链表的方法
2020/02/16 Javascript
如何基于js判断浏览器版本
2020/02/20 Javascript
python fabric实现远程操作和部署示例
2014/03/25 Python
在Django框架中伪造捕捉到的URLconf值的方法
2015/07/18 Python
Python中绑定与未绑定的类方法用法分析
2016/04/29 Python
Python实现对字符串的加密解密方法示例
2017/04/29 Python
Python基础教程之浅拷贝和深拷贝实例详解
2017/07/15 Python
Python地图绘制实操详解
2019/03/04 Python
使用Dajngo 通过代码添加xadmin用户和权限(组)
2020/07/03 Python
python基于socket模拟实现ssh远程执行命令
2020/12/05 Python
用css3写出气球样式的示例代码
2017/09/11 HTML / CSS
HTML5 的新的表单元素(datalist/keygen/output)使用介绍
2013/07/19 HTML / CSS
网购亚洲时装、美容产品和生活百货:YesStyle
2016/09/15 全球购物
新西兰演唱会和体育门票网站:Ticketmaster新西兰
2017/10/07 全球购物
即时搜索数百万张门票:SeatsForEveryone.com
2018/08/26 全球购物
French Connection官网:女装、男装及家居用品
2019/03/18 全球购物
Cult Gaia官网:美国生活方式品牌
2019/08/16 全球购物
商务英语应届生自我鉴定
2013/12/08 职场文书
商务英语专业大学生职业生涯规划书
2014/09/14 职场文书
公司离职证明范本
2014/10/17 职场文书
2015年工程师工作总结
2015/04/30 职场文书
竞聘书的秘诀
2019/04/02 职场文书