我有一个我正在构建的数组:
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,
)
我只能假设键是设置的顺序。为什么它们不按顺序出现?
有没有办法强制数组按数字顺序按键排序?
答案 0 :(得分:6)
首先只需ksort()
数组。
答案 1 :(得分:0)
我敢打赌,正在从不遵守订单的数据库中读取密钥($item->getPosition()
)。这不是foreach
问题。
答案 2 :(得分:0)
我同意加里。
但您也可以尝试在数据库查询中对其进行排序。假设它是一个MySQL数据库:
"SELECT * FROM `table` WHERE `column` = 'value' ORDER BY `position` ASC"
这会在他们达到foreach声明之前对它们进行排序。