PHP foreach循环将数组元素从数字顺序中取出


PHP foreach loop takes array elements out of numeric order?

我有一个像这样的数组:

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

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

是否有一种方法可以强制数组按数字顺序按键排序?

先放ksort()

我敢打赌,键($item->getPosition())是从一个不尊重其顺序的数据库中读取的。这不是foreach的问题。

  1. 读取数据
  2. 排序数组
  3. 输出

我同意Gary的看法。

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

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

在它们到达foreach语句之前对它们进行排序。