2012-06-08 30 views
6

由於某些原因,當從數組中刪除項目時,我留下了諸如0,2,3,4,6,9而不是0,1,2,3,4,5的鍵。我試圖弄清楚爲什麼,以及我能做些什麼來修復它,而不是通過sort()排序所有東西,因爲這樣可以使東西整齊。我只想重新說話。PHP修復了數組中的數字鍵

回答

26

使用array_values()獲取原始數組的值並將它們返回給新數組。該新數組包含新的數字鍵。

$new_array = array_values($old_array); 
+0

我不得不假設這不起作用,當一個數組鍵可能是關聯的,並且你想知道關於thouse。 – ThorSummoner

3

由於密鑰不一定不要緊,可以通過只運行array_values()的最終結果陣列。它將所有值按照它們已經存在的順序保留,將所有的鍵都重置爲連續的數值。

+0

這實際上是錯誤的,有人發現順序不是外觀順序,而是保存的foreach順序:http://php.net/manual/fr/function.array-values.php#114941 – Sebas

5

您應該使用array_splice()從陣列中移除元素,以便按照您希望的方式同時更改鍵。

你必須小心array_values(),因爲它不會(或至少不可能)工作,因爲它可能re-order your numeric indexes。如果您在索引3處的值後添加索引0處的值,索引0處的值將放置在由array_values()返回的數組的末尾,而它首先出現在您的列表中。