PHP删除数组中的特定元素的代码

转载 2015年07月07日 11:50:03

 

复制代码代码如下:

<?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删除数组中指定值的元素的几种方法

测试数组如下: //这是一个测试数组 $testArr = array( 't' => 'qq', 'q' => 'qq', 'b' => 'baidu', 'a' => 'ali', '...
  • u011250882
  • u011250882
  • 2015年09月21日 14:31
  • 21089

根据key删除数组中指定的元素

php数组中元素的存在方式是以键值对的方式('key'=>'value'),有时候我们需要根据键删除数组中指定的某个元素。 function bykey_reitem($arr, $key){...
  • sinat_31659933
  • sinat_31659933
  • 2015年11月16日 00:09
  • 3672

PHP中删除数组中的元素详解(unset,array_splice)数组元素增删汇总

php中删除数组元素是非常的简单的,主要是unset,array_splice,但是关于两者有,长时间混用,有的时候竟然分不出区别。今天特意总结一下,增加记忆,便于使用。 很多地方都这样区别unset...
  • hsd2012
  • hsd2012
  • 2016年03月26日 10:49
  • 3657

关于多维数组转化为一维没有重复元素的php代码

  • 2011年09月18日 22:28
  • 898B
  • 下载

List数组去除特定元素的方法

关于去除List数组中某个元素的方法有很多,其中以下这种方法对于新手来说很容易犯错: public class ListTest { public  void remove() {     Arr...
  • YANGYYID
  • YANGYYID
  • 2017年08月01日 01:02
  • 276

折半查找,也称二分查找、二分搜索,是一种在有序数组中查找某一特定元素的搜索算法。

折半查找,也称二分查找、二分搜索,是一种在有序数组中查找某一特定元素的搜索算法。...
  • u012726702
  • u012726702
  • 2017年05月14日 17:28
  • 220

php中删除数组元素的几种方式

php的数组没有remove方法,以前到觉得没什么,但今晚被狠狠坑了一把。 $data是一个关联数组,其中包括了类型为整数,字符串或数组的元素。我需要从$data中取出$data['x']这个元素,...
  • maxint64
  • maxint64
  • 2013年04月08日 01:45
  • 1039

php删除数组中指定值的元素的几种方法

出处:点击打开链接 测试数组如下: //这是一个测试数组 $testArr = array( 't' => 'qq', 'q' => 'qq', 'b'...
  • Inite
  • Inite
  • 2017年11月27日 22:36
  • 38

找出两个数组中重复元素的精华代码

  • 2016年06月28日 09:35
  • 563B
  • 下载

Effective STL--不同容器删除特定元素的方法

输入迭代器是每个迭代位置智能被读一次的只读迭代器。输出迭代器是每个迭代位置只能被写一次的只写迭代器。输入和输出迭代器被塑造为读和写输入和输出流。前向迭代器有输入和输出迭代器的能力,但是他们可以反复读或...
  • yusiguyuan
  • yusiguyuan
  • 2014年12月25日 10:45
  • 724
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:PHP删除数组中的特定元素的代码
举报原因:
原因补充:

(最多只允许输入30个字)