2012-03-26 118 views
0

我偶然發現了一些讓我困惑的東西。在我之前,如果你保存一個數組並且它是整數的鍵,那麼數組會自動對它自己排序。陣列中的鍵排序

Array 
(
    [1] => one 
    [2] => two 
) 

相反,它出現這樣的:

Array 
(
    [2] => two 
    [1] => one 
) 

也就是說,如果我添加的關鍵 2,關鍵 1之前,我雖然該陣列將由最低數量排序

操作:

$arr = array(); 
$arr[2] = 'two'; 
$arr[1] = 'one'; 

這看起來好像沒什麼,但有時我用foreach()或STO在數組中指定它們並將它們排序爲INSERT -query,然後它們需要按正確的順序(由於AUTO INCREMENT)。

因此問題
在PHP中預期的排序結果是什麼?

我有一個相當強大的內存,我已經通過輸出#1排序了數組。這是否有所不同從PHP版本到PHP版本?

感謝您的回答!

+0

你是如何得到這個數組的?即您使用了哪種陣列操作? – 2012-03-26 09:29:27

+0

數組中的AFAIK項目按照將它們添加到數組中的順序排列。您可以使用一些內置PHP函數按鍵對數組進行排序。 – 2012-03-26 09:29:59

+0

'$ arr [2] ='blabla''只會將元素推到數組的末尾,因此,請使用'ksort'重新排序 – Val 2012-03-26 09:38:00

回答

5

PHP數組實際上是一個有序的映射。它保持順序,早期的元素將在後面的元素之前。您可以使用ksort按鍵排序數組。

+0

感謝您的回答。我想我的記憶讓我失望了,這是在以前的項目中自動排序的。 – 2012-03-26 09:46:30

1

This article解釋說,PHP數組實際上是有序的哈希映射,其中的鍵以它們生成的順序存儲。

如果您想要更傳統的陣列行爲,請嘗試SPLFixedArray類。