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 相关文章推荐
用户的详细注册和判断
Oct 09 PHP
用PHP制作静态网站的模板框架(四)
Oct 09 PHP
PHP下对字符串的递增运算代码
Aug 21 PHP
PHP学习笔记之三 数据库基本操作
Jan 17 PHP
php 广告调用类代码(支持Flash调用)
Aug 11 PHP
php编程中echo用逗号和用点号连接的区别
Mar 26 PHP
PHP 5.6.11中CURL模块问题的解决方法
Aug 08 PHP
CodeIgniter框架验证码类库文件与用法示例
Mar 18 PHP
PHP大文件分割上传 PHP分片上传
Aug 28 PHP
详解laravel安装使用Passport(Api认证)
Jul 27 PHP
解决Laravel 使用insert插入数据,字段created_at为0000的问题
Oct 11 PHP
laravel框架中控制器的创建和使用方法分析
Nov 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服务器实现多session并发运行
2006/10/09 PHP
php mssql扩展SQL查询中文字段名解决方法
2012/10/15 PHP
PHP设计模式之解释器模式的深入解析
2013/06/13 PHP
PHP生成sitemap.xml地图函数
2013/11/13 PHP
PHP函数shuffle()取数组若干个随机元素的方法分析
2016/04/02 PHP
thinkphp框架实现路由重定义简化url访问地址的方法分析
2020/04/04 PHP
ASP.NET中使用后端代码注册脚本 生成JQUERY-EASYUI的界面错位的解决方法
2010/06/12 Javascript
jquery实现鼠标拖动图片效果示例代码
2014/01/09 Javascript
Jquery 返回json数据在IE浏览器中提示下载的问题
2014/05/18 Javascript
js实现跨域访问的三种方法
2015/12/09 Javascript
Jquery实现$.fn.extend和$.extend函数
2016/04/14 Javascript
JS实现图文并茂的tab选项卡效果示例【附demo源码下载】
2016/09/21 Javascript
Bootstrap树形菜单插件TreeView.js使用方法详解
2016/11/01 Javascript
原生javascript实现的ajax异步封装功能示例
2016/11/03 Javascript
详解AngularJS 模块化
2017/06/14 Javascript
JS 仿支付宝input文本输入框放大组件的实例
2017/11/14 Javascript
微信小程序之圆形进度条实现思路
2018/02/22 Javascript
node打造微信个人号机器人的方法示例
2018/04/26 Javascript
Vue+axios实现统一接口管理的方法
2018/07/23 Javascript
详解vue中axios的使用与封装
2019/03/20 Javascript
javascript-hashchange事件和历史状态管理实例分析
2020/04/18 Javascript
动态规划之矩阵连乘问题Python实现方法
2017/11/27 Python
对pandas进行数据预处理的实例讲解
2018/04/20 Python
selenium处理元素定位点击无效问题
2019/06/12 Python
Python matplotlib以日期为x轴作图代码实例
2019/11/22 Python
如何用Python绘制3D柱形图
2020/09/16 Python
李宁官方网店:中国运动品牌
2017/11/02 全球购物
Gtech官方网站:地毯清洁器、吸尘器及园艺设备
2018/05/23 全球购物
家乐福台湾线上购物网:Carrefour台湾
2020/09/15 全球购物
System.Array.CopyTo()和System.Array.Clone()有什么区别
2016/06/20 面试题
2014年绿化工作总结
2014/12/09 职场文书
委托公证书样本
2015/01/23 职场文书
攻击最高的10只幽灵系神奇宝贝,坚盾剑怪排第一,第五最为可怕
2022/03/18 日漫
python pygame 开发五子棋双人对弈
2022/05/02 Python
delete in子查询不走索引问题分析
2022/07/07 MySQL
win10如何快速切换窗口 win10切换窗口快捷键分享
2022/07/23 数码科技