array_splice()

我们知道,PHP没有提供专门删除一个特定数组元素的方法。但是可以通过unset()函数来完成这种要求,比如下面的程序:

<?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-10-12 01:51:34

array_splice()的相关文章

(实用篇)PHP中unset,array_splice删除数组中元素的区别

php中删除数组元素是非常的简单的,但有时删除数组需要对索引进行一些排序要求我们会使用到相关的函数,这里我们来介绍使用unset,array_splice删除数组中的元素区别吧 如果要在某个数组中删除一个元素,可以直接用的unset,但是数组的索引不会重排: <?php $arr = array('a','b','c','d'); unset($arr[1]); print_r($arr); ?> 结果是: Array ( [0] => a [2] => c [3] => d

[PHP源码阅读]array_slice和array_splice函数

array_slice和array_splice函数是用在取出数组的一段切片,array_splice还有用新的切片替换原删除切片位置的功能.类似javascript中的Array.prototype.splice和Array.prototype.slice方法. 我在github上有对PHP源码更详细的注解.感兴趣的可以围观一下,给个star.PHP5.4源码注解.可以通过commit记录查看已添加的注解. array_slice array array_slice ( array $arra

PHP中unset,array_splice删除数组中元素的区别

php中删除数组元素是非常的简单的,但有时删除数组需要对索引进行一些排序要求我们会使用到相关的函数,这里我们来介绍使用unset,array_splice删除数组中的元素区别吧 如果要在某个数组中删除一个元素,可以直接用的unset,但是数组的索引不会重排: <?php $arr = array('a','b','c','d'); unset($arr[1]); print_r($arr); ?> 结果是: Array ( [0] => a [2] => c [3] => d

array_splice()函数 ,删除数组中的某个值

array_splice() 这个函数是真的皮,有好多种方法,但是最后还是在PHP官方的文档找到了合理的解释的用法 花了大概半个小时 $arr = array('a','b','c','d'); array_splice($arr,1,1); print_r($arr); ?> 结果就是 Array ( [0] => a [1] => c [2] => d ) array_splice($1,$2,$3) 这第一个参数就是对哪个数组的操作 这第二个参数就是开始的下标, 这第三个就是

向数组中插入数据的函数array_splice

我们可以使用array_unshift向数据的首位和array_push结尾添加数据. array_unshift: $array = array('z','b','c','d','e'); $array2= array('m'); $temp = array_unshift($array,$array2); 注意:$array2为array('m')和字符串'm'时结果是不一样的,如果想插入后仍是一维数组,可以使用字符串. 同理,array_push一样. 而array_splice可以替换掉

6-6-1-php数组相关(2)

1.for比较少用遍历连续数字下标的数组,和c语言差不多,简单记录一下: for(int $i=0;$i<count($arr);$i++){.....$arr[$i]......} 2.php有专门遍历数组而设计的foreach语句 foreach( $arr as $value ){} foreach( $arr as $key=>$value){} 多维:使用嵌套 foreach ( $arr as $key => $arr1 ){ foreach($arr1 as $value

php 数组常用函数

PHP数组中常用的函数: 1.//array_values - 返回数组中所有的值 $array = array("name"=>"zhangsan","age"=>"10","sex"=>"man"); $tem= array_values($array); echo "<pre>"; print_r($tem); echo "

PHP实现删除数组中的特定元素

方法1: 1 <?php 2 $arr1 = array(1,3, 5,7,8); 3 $key = array_search(3, $arr1); 4 if ($key !== false) 5 array_splice($arr1, $key, 1); 6 var_dump($arr1); 7 ?> 返回结果:array(4) { [0]=> int(1) [1]=> int(5) [2]=> int(7) [3]=> int(8) } 方法2: 1 <?ph

php 基本概念,常规语法

什么是php 一种服务器端的 HTML 脚本/编程语言,是一种简单的.面向对象的.解释型的.健 壮的.安全的.性能非常之高的.独立于架构的.可移植的.动态的脚本语言.是一种 广泛用于 Open Source(开放源代码)的尤其适合 Web 开发并可以嵌入 HTML 的多用 途脚本语言.它的语法接近 C,Java 和 Perl,而且容易学习.该语言让 Web 开发人 员快速的书写动态生成的网页. php的中文名字及全称 超文本预处理器  全称:Hypertext Preprocessor. php