У меня есть массив, который я строю следующим образом:
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()
просто ksort()
массив.
Готов поспорить, что ключи ( $item->getPosition()
) считываются из базы данных, которая не $item->getPosition()
их порядок. Это не проблема.
Я согласен с Гэри.
Но вы также можете попробовать отсортировать его в запросе базы данных. Предполагая, что это база данных MySQL:
"SELECT * FROM `table` WHERE `column` = 'value' ORDER BY `position` ASC"
Это будет сортировать их, прежде чем они ударят по заявлению foreach.