函數用法: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 )