2011-01-30 23 views
0

我需要刪除數組的前29個值。我搜索了,似乎沒有任何內置的PHP函數允許這樣做。那麼這怎麼做呢?如何從PHP中的數組中刪除值?

+2

除了給出的答案:要刪除單個值,使用`unset`:http://php.net/manual/en/function.unset.php – 2011-01-30 10:36:32

回答

2

可以使用array_splice從數組中取出的值:

array_splice($arr, 0, 29) 

陣列被作爲參考作爲array_splice通過修改陣列本身。它返回已被刪除的值的數組。

下面是如何工作的一個例子:

$arr = range(1, 30); 
$removed = array_splice($arr, 0, 29); 
var_dump($arr);  // array(1) { [0]=> int(30) } 
var_dump($removed); // array(29) { [0]=> int(1) … [28]=> int(29) } 

在相反,array_slice(不p)只是拷貝陣列的不修改它的一部分:

$arr = range(1, 30); 
$copied = array_slice($arr, 29); 
var_dump($arr); // array(30) { [0]=> int(1) … [29]=> int(30) } 
var_dump($copied); // array(1) { [0]=> int(30) } 

這裏array_slice($arr, 29)複製從偏移29到結尾的所有內容,同時保留$arr

但正如你說你要刪除的價值觀,array_splice似乎是更好的選擇,而不是複製一個部分,並重新分配複製的部分回這樣的變量:

$arr = array_slice($arr, 29); 

因爲雖然這具有相同的效果(前29個值不再存在),則執行兩次複製操作:創建一個新陣列並複製除前29個值以外的所有內容,然後將該值重新分配給$arr(需要再次複製整個陣列) 。

+0

這給我留下了前29個值,我想要刪除前29個,剩下的就剩下了。 – Sammy 2011-01-30 10:44:41

+0

@Sammy:如前所述,`array_splice`修改傳遞的數組,並且只返回已經被刪除的值。 – Gumbo 2011-01-30 10:45:50

4
array_splice($array, 0, 29); 

array_splice刪除數組中的元素並返回刪除的元素。

另外,如果你想保持原來的數組,但希望創建與刪除的第一個29個元素的數組,使用array_slice

$newArray = array_slice($array, 29);