2012-07-22 64 views
6
$array = array('a', 'b','c'); 
unset($array[0]); 
var_dump($array); 

Yields: 
array(1) { 
    [1]=> 
    'b' 
    'c' 
} 

如何,刪除陣列[0]獲得[ 'BB', 'CC'(無空鍵):如何從數組中刪除鍵和更新索引?

array(1) { 
    'b' 
    'c' 
} 
+0

array_values()設定解除後,將工作 – 2012-07-23 00:01:10

回答

18

檢查:

$array = array('a', 'b','c'); 
unset($array[0]); 
$array = array_values($array); //reindexing 
13

array_splice()

$array = array_splice($array, 0, 1); 

看看如果你碰巧正在移除第一個元素(而不是數組中間的任意元素),array_shift()更合適。

+0

+1,比'未設置/ array_values'組合更好的選擇。 – 2012-07-23 00:15:55

+0

爲什麼這是比unset/array_values更好的選擇?速度? – Bashevis 2014-02-14 03:37:10

+1

@Bashevis:有速度優勢,是的。可以說更重要的是:它更乾淨更清晰。 'array_slice()'旨在完成這件事。毫無疑問,當你看到這個函數調用時會發生什麼。 '未設置(); array_values();'完成相同的事情,但是在兩個單獨的步驟中完成,這迫使讀者計算出後果 - 即找出這是一個執行'array_slice()'的方法。 – VoteyDisciple 2014-02-14 20:04:54