函数用法:array_splice($array,$offset,$length,$array_replace)php
$offset: 向原数组中删除元素的起始位置,也是插入值的起始位置数组
$length: 原数组中被删除的元素数量app
$array_replace: 要被插入到原数组中的值,多个值必须以数组的形式提供函数
注意:当参数$offset是负数时,用原数组的长度加上负数做为相应的参数来计算。spa
1、当原数组是索引数组时code
一、这个方法直接在原数组$array上删除由$offset和$length指定的元素,并重建数组索引,它的返回值是被删掉的数组元素组成的数组(这个索引也被重建):索引
$a1=array(0=>"Dog",1=>"Cat",2=>"Horse",3=>"Bird"); print_r(array_splice($a1,0,2)); //输出:Array ( [0] => Dog [1] => Cat ) print_r($a1); //输出:Array ( [0] => Horse [1] => Bird ) $a2 = array('apple','banana','cat','dog','bird'); print_r(array_splice($a2,2,1)); //输出:Array( [0] => cat ) print_r($a2); //输出:Array( [0] => apple [1] =>banana [2] => dog [3] => bird )
二、若是给这个方法提供了第四个参数$array_replace,则会在原数组上修改,把由$offset和$length指定的元素的值用$array_replace中的元素值替代,并重建原数组的索引。替换的顺序是$array_replace中元素的建立顺序,与其索引值无关。io
$a1=array(0=>"Dog",1=>"Cat",2=>"Horse",3=>"Bird"); $a2=array(0=>"Tiger",1=>"Lion"); print_r(array_splice($a1,0,2,$a2)); //输出:Array ( [0] => Dog [1] => Cat ) print_r($a1); //输出:Array ( [0] => Tiger [1] => Lion [2] => Horse [3] => Bird )
三、事实上,$length的大小与$array_replace的长度无关,$length只表明从原数组中删除多少个元素,不管删除多少个元素,$array_replace中的全部值都会被插入到原数组中的指定起始位置$offsetclass
例如:若是提供第四个参数的同时,$length设为0,则会在原数组中$offset位置开始插入$array_replace中的全部元素方法
$a1=array(0=>"Dog",1=>"Cat"); $a2=array(0=>"Tiger",1=>"Lion",2=>"Elepant"); print_r(array_splice($a1,1,0,$a2)); //输出:Array ( ) print_r($a1); //输出:Array ( [0] => Dog [1] => Tiger [2] => Lion [3] => Elepant [4] => Cat )
2、当原数组是关联数组时
一、$offset的计数方法也是按照原数组中元素的建立顺序,与其索引值无关。
二、若是提供了第四个参数,则$array_replace中的元素会按照建立顺序在原数组指定位置进行替换,而且原数组中被替换的那几个元素 和 剩下元素中索引值是数字的元素,它们的索引会从0开始重建
$a1=array('3'=>"Dog",'b'=>"Cat",'2'=>"Horse",1=>"Bird",'5d'=>'Bug','d'=>'buck'); $a2=array('b'=>"Tiger",'a'=>"Lion"); print_r(array_splice($a1,1,2,$a2)); //输出:Array ( [b] => Cat [0] => Horse ) print_r($a1); //输出:Array ( [0] => Dog [1] => Tiger [2] => Lion [3] => Bird [5d] => Bug [d] => buck )