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 09 PHP
nginx+php-fpm配置文件的组织结构介绍
Nov 07 PHP
PHP中使用sleep函数实现定时任务实例分享
Aug 21 PHP
php使用mysqli向数据库添加数据的方法
Mar 20 PHP
Nginx下配置codeigniter框架方法
Apr 07 PHP
配置eAccelerator和XCache扩展来加速PHP程序的执行
Dec 22 PHP
PHP入门教程之自定义函数用法详解(创建,调用,变量,参数,返回值等)
Sep 11 PHP
PHP请求远程地址设置超时时间的解决方法
Oct 29 PHP
PHP判断数组是否为空的常用方法(五种方法)
Feb 08 PHP
php实现用户登陆简单实例
Apr 04 PHP
PHP中引用类型和值类型功能与用法示例
Feb 26 PHP
PHP超全局变量实现原理及代码解析
Sep 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
杏林同学录(九)
2006/10/09 PHP
教你如何开启shopnc b2b2c 伪静态
2014/10/21 PHP
PHP-FPM和Nginx的通信机制详解
2019/02/01 PHP
PHP代码加密的方法总结
2020/03/13 PHP
身份证号码前六位所代表的省,市,区, 以及地区编码下载
2007/04/12 Javascript
监控 url fragment变化的js代码
2010/04/19 Javascript
为你的网站增加亮点的9款jQuery插件推荐
2011/05/03 Javascript
关于 文本框默认值 的操作js代码
2012/01/12 Javascript
事件冒泡是什么如何用jquery阻止事件冒泡
2013/03/20 Javascript
jQuery中多个元素的Hover事件解决方案
2014/06/12 Javascript
js图片切换具体实现代码
2016/10/13 Javascript
关于微信jssdk实现多图片上传的一点心得分享
2016/12/13 Javascript
jQuery.Form上传文件操作
2017/02/05 Javascript
AngulerJS学习之按需动态加载文件
2017/02/13 Javascript
基于JavaScript实现报警器提示音效果
2017/10/27 Javascript
详解一个基于套接字实现长连接的express
2019/03/28 Javascript
Vue登录拦截 登录后继续跳转指定页面的操作
2020/08/04 Javascript
javascript实现移动端上传图片功能
2020/08/18 Javascript
Python中http请求方法库汇总
2016/01/06 Python
Python全局锁中如何合理运用多线程(多进程)
2019/11/06 Python
Pytorch之卷积层的使用详解
2019/12/31 Python
浅谈sklearn中predict与predict_proba区别
2020/06/28 Python
Python 添加文件注释和函数注释操作
2020/08/09 Python
细说CSS3中box属性中的overflow-x属性和overflow-y属性值的效果
2014/07/21 HTML / CSS
实列教程 一款基于jquery和css3的响应式二级导航菜单
2014/11/13 HTML / CSS
速卖通欧盟:Aliexpress EU
2020/08/19 全球购物
开办化妆品公司创业计划书
2013/12/26 职场文书
校园文化建设方案
2014/02/03 职场文书
《庐山的云雾》教学反思
2014/04/22 职场文书
2014年医生工作总结
2014/11/21 职场文书
护士年终考核评语
2014/12/31 职场文书
小学总务工作总结
2015/08/13 职场文书
销区经理年终述职报告模板
2019/11/28 职场文书
关于React Native使用axios进行网络请求的方法
2021/08/02 Javascript
日本动漫十大公认神作:第五现已全网禁播,《死亡笔记》在榜
2022/03/18 日漫
Oracle查看表空间使用率以及爆满解决方案详解
2022/07/23 Oracle