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脚本的10个技巧(7)
Oct 09 PHP
PHP 存取 MySQL 数据库的一个例子
Oct 09 PHP
PHP之数组学习
May 29 PHP
解析在PHP中使用全局变量的几种方法
Jun 24 PHP
深入解析php中的foreach问题
Jun 30 PHP
ThinkPHP登录功能的实现方法
Aug 20 PHP
php制作动态随机验证码
Feb 12 PHP
php中数据库连接方式pdo和mysqli对比分析
Feb 25 PHP
PHP单例模式详细介绍
Jul 01 PHP
php 可变函数使用小结
Jun 12 PHP
php中访问修饰符的知识点总结
Jan 27 PHP
php实现通过stomp协议连接ActiveMQ操作示例
Feb 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
《五等分的花嫁》漫画完结!2020年10月第2期TV动画制作组换血!
2020/03/06 日漫
php csv操作类代码
2009/12/14 PHP
与文件上传有关的php配置参数总结
2013/06/14 PHP
解析phpstorm + xdebug 远程断点调试
2013/06/20 PHP
将php数组输出html表格的方法
2014/02/24 PHP
PHP树的深度编历生成迷宫及A*自动寻路算法实例分析
2015/03/10 PHP
PHP入门教程之面向对象的特性分析(继承,多态,接口,抽象类,抽象方法等)
2016/09/11 PHP
php根据数据id自动生成编号的实现方法
2016/10/16 PHP
按给定几率进行随机抽取的js代码
2010/12/28 Javascript
json2.js的初步学习与了解
2011/10/06 Javascript
mailto的使用技巧分享
2012/12/21 Javascript
JS实现可改变列宽的table实例
2013/07/02 Javascript
javascript中的window.location.search方法简介
2013/09/02 Javascript
JS+CSS实现类似QQ好友及黑名单效果的树型菜单
2015/09/22 Javascript
深入理解bootstrap框架之第二章整体架构
2016/10/09 Javascript
js提示框替代系统alert,自动关闭alert对话框的实现方法
2016/11/07 Javascript
原生js实现轮播图的示例代码
2017/02/20 Javascript
Bootstrap Table 删除和批量删除
2017/09/22 Javascript
浅谈Vuejs中nextTick()异步更新队列源码解析
2017/12/31 Javascript
解析Angular 2+ 样式绑定方式
2018/01/15 Javascript
原生js通过一行代码实现简易轮播图
2019/06/05 Javascript
手机浏览器唤起微信分享(JS)
2020/10/11 Javascript
[01:01:24]DOTA2上海特级锦标赛A组败者赛 EHOME VS CDEC第三局
2016/02/25 DOTA
python计算圆周率pi的方法
2015/07/11 Python
详解在Python程序中解析并修改XML内容的方法
2015/11/16 Python
Linux RedHat下安装Python2.7开发环境
2017/05/20 Python
Python及Pycharm安装方法图文教程
2019/08/05 Python
python如何实现图片压缩
2020/09/11 Python
Python学习之time模块的基本使用
2021/01/17 Python
Linux内核的同步机制是什么?主要有哪几种内核锁
2016/07/11 面试题
大学生求职中的自我评价
2013/10/01 职场文书
机械电子工程专业推荐信范文
2013/11/20 职场文书
幼儿园保育员岗位职责
2014/04/13 职场文书
财务会计实训报告
2014/11/05 职场文书
2015年党建工作总结
2015/03/30 职场文书
员工加薪申请报告
2015/05/15 职场文书