我有一个像这样的数组:
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
的问题。
- 读取数据
- 排序数组 输出
我同意Gary的看法。
但是您也可以尝试在数据库查询中对其排序。假设是MySQL数据库:
"SELECT * FROM `table` WHERE `column` = 'value' ORDER BY `position` ASC"
在它们到达foreach语句之前对它们进行排序。