PHP刪除數組中的特定元素的代碼

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); 
//by www.jbxue.com
?> 

經過測試可以知道,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); //by www.jbxue.com
?> 
//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"); //by www.jbxue.com
print_r(array_splice($a1,0,2,$a2)); 
?> 
//output : Array ( [0] => Dog [1] => Cat ) 

示例3: 
<?php 
// length 參數設置爲 0 
// www.jbxue.com
$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 ) 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章