PHP foreach循环使数组元素不是数字顺序?

时间:2011-07-07 17:36:35

标签: php arrays

我有一个我正在构建的数组:

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,
)

我只能假设键是设置的顺序。为什么它们不按顺序出现?

有没有办法强制数组按数字顺序按键排序?

3 个答案:

答案 0 :(得分:6)

首先只需ksort()数组。

答案 1 :(得分:0)

我敢打赌,正在从不遵守订单的数据库中读取密钥($item->getPosition())。这不是foreach问题。

  1. 阅读数据
  2. 对数组进行排序
  3. 输出

答案 2 :(得分:0)

我同意加里。

但您也可以尝试在数据库查询中对其进行排序。假设它是一个MySQL数据库:

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

这会在他们达到foreach声明之前对它们进行排序。