2012-03-26 17 views
0

私は私を混乱させる何かを見つけました。しかし、配列を保存し、そのキーが整数である場合、配列は自動的にソートされます。
私はキー1前に、キー2を追加した場合、私は配列が最低数でソートされることけれどもいただきたい、次のとおりです。配列内でのキーの順序

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

代わりに、それは次のように起動します:

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

操作:

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

これは何のように見えるかもしれませんが、時々私はforeach()やSTOを使用配列内のIDをソートして並べ替えて、おそらくINSERT -queryのためにカウントし、正しい順序(AUTO INCREMENTのため)である必要があります。

したがって質問
PHPで期待される注文結果は何ですか?

以前は出力#1を介して配列をソートしていましたが、かなり強い記憶があります。これはphp-versionとphp-versionの違いはありますか?

ありがとうございました!

+0

どうやってその配列を完成させましたか?つまり、どのアレイ操作を使用しましたか? –

+0

配列内のAFAIK項目は、配列に追加する順番になります。組み込みのPHP関数を使用して、キーで配列をソートすることができます。 –

+0

'$ arr [2] = 'blabla''は配列の最後に要素をプッシュします。なぜ、' ksort'を使って順序を変更しますか? – Val

答えて

5

PHP配列は実際には順序付けられたマップです。それは順序を保持し、前の要素は後の要素に先行する。

ksortを使用すると、キーで配列を並べ替えることができます。

+0

答えをありがとう。私の記憶が私の記憶に残っていないのは、これが以前のプロジェクトで自動的にソートされたことだと思います。 –

1

This articleは、実際にはキーが生成された順序で格納されている順序付きハッシュマップであることを説明しています。

もっと伝統的な配列動作をしたい場合は、SPLFixedArrayクラスを試してください。

関連する問題