2011-07-07 5 views
3
私はこのように構築していますアレー持っ

:私は、出力にその配列を通してそれを実行するとPHP foreachループは、配列の要素を数値の順序から外しますか?

foreach($items as $item) { 
    $this->_array[(int)$item->getPosition()] = $item; 
} 

を、私はこの期待:

array (
    [0] => item0, 
    [1] => item1, 
    [2] => item2, 
    [3] => item3, 
) 

しかし、私はこの取得:

array (
    [3] => item3, 
    [0] => item0, 
    [2] => item2, 
    [1] => item1, 
) 

私は、キーがセットされた順番しか想定できません。なぜ、それらが順番に出てこないのですか?

キーを順番に並べ替える方法はありますか?

答えて

6

ちょうどksort()最初に配列。

+0

まさに私が必要としていた、ありがとう。私が文書を読んだときにそれを逃した。 –

+3

一年後に - - まだ仲間のコーダーを助ける!ありがとう! – adam

0

私はそのキー($item->getPosition())がその注文を尊重しないデータベースから読み込まれていると確信しています。 foreachの問題ではありません。

  1. データに
  2. ソートを読む
0

配列

  • 出力は、私はゲイリーに同意します。

    ただし、データベースクエリで並べ替えることもできます。それはMySQLデータベースだと仮定します。

    "SELECT * FROM `table` WHERE `column` = 'value' ORDER BY `position` ASC" 
    

    これは、foreach文にヒットする前にそれらをソートします。

  • 関連する問題