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

比如下面的程序:

复制代码 代码如下:

<?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 )

时间: 2024-09-29 13:07:13

PHP删除数组中的特定元素的代码_php技巧的相关文章

php实现在多维数组中查找特定value的方法_php技巧

本文实例讲述了php实现在多维数组中查找特定value的方法.分享给大家供大家参考.具体如下: 最近做项目,需要从多维数组中查找是否含有特定的key和其对应特定的value,并清除该条数据,比如: $arr = array( //为了看的方便,数组表达形式不对 0=>array(id =>1,name =>"li") 1=>array(id =>2,name =>"na") 2=>array(id =>3,name =

c#中,如何删除数组中既定的元素,得到删除后的新数组?

问题描述 c#中,如何删除数组中既定的元素,得到删除后的新数组? RT,比如a[10]={0,1,2,3,4,5,6,7,8,9}; b[4]={1,3,5,6}; 删除a中b的数后得到新的数组c,应该怎么做? 解决方案 int[] c = a.Except(b).ToArray(); 解决方案二: 没有在数组中删除元素的做法,新数组得创建 解决方案三: 删除数组中存在重复的元素.删除ary数组中的和keyword中相同的元素,其余的不变并输出 解决方案四: 要重新分配数组,把新内容复制过去

c-请教一个删除数组中指定下标元素的问题

问题描述 请教一个删除数组中指定下标元素的问题 std::string ss="sdfsefsf"; ss[3]=null; 如果这样的话第四个数就会变成一个空格,我想请教一下怎么样才能让第四个数 直接消失,不要用任何东西替换. 解决方案 你这样本来就是把第四个元素替换成空格,删除元素用erase,例如删除第四个 ss.erase(ss.begin()+3); 解决方案二: ss[3] = ''; 解决方案三: vc不知道,但java中js有个方法 array.splice(index

如何删除数组中的重复元素(asp,js,php)

如何删除数组中的重复元素(asp教程,js,php教程) <html xmlns="http://www.111cn.net/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> </head> <body> js删除数据组中重复的元素 <script l

java中删除 数组中的指定元素

java的api中,并没有提供删除数组中元素的方法.虽然数组是一个对象,不过并没有提供add().remove()或查找元素的方法.这就是为什么类似ArrayList和HashSet受欢迎的原因.不过,我们要感谢Apache Commons Utils,我们可以使用这个库的ArrayUtils类来轻易的删除数组中的元素.不过有一点需要注意,数组是在大小是固定的,这意味这我们删除元素后,并不会减少数组的大小.所以,我们只能创建一个新的数组,然后使用System.arrayCopy()方法将剩下的元

php删除数组中相同的元素,只保留一个相同元素

 代码如下 复制代码 <?php // 删除数组中相同元素,只保留一个相同元素 function formatArray($array) { sort($array); $tem = "; $temarray = array(); $j = 0; for($i=0;$i<count($array);$i++) { if($array[$i]!=$tem) { $temarray[$j] = $array[$i]; $j++; } $tem = $array[$i]; } return

javascript 删除数组中重复项(uniq)_javascript技巧

可以直接使用的代码:修正版 [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行] 下面是进阶教程与说明,喜欢跟深入的朋友可以参考下.首先让我们看下 YUI 是如何处理的: 复制代码 代码如下: var toObject = function(a) { var o = {}; for (var i = 0; i < a.length; i = i+1) { o[a[i]] = true; } return o; }; var keys = function(o) { var a=[], i;

C# 去除数组中重复的元素简单代码

例子  代码如下 复制代码 string[] stringArray = { "aaa", "bbb", "aaa", "ccc", "bbb", "ddd", "ccc", "aaa", "bbb", "ddd" }; //List用于存储从数组里取出来的不相同的元素 List>string>

php在数组中查找指定值的方法_php技巧

本文实例讲述了php在数组中查找指定值的方法.分享给大家供大家参考.具体如下: php中有两个函数可以判断数组中是否包含指定的值,分别是:array_search($value, $array)和in_array($value, $array),array_search可以找出指定的值在数组中出现的位置,in_array函数只判断数组中是否存在指定的值,返回bool值 <?php $array = array("Perl", "PHP", "Java