PHP foreach loop принимает элементы массива из числового порядка?

У меня есть массив, который я строю следующим образом:

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() их порядок. Это не проблема.

  1. Прочтите данные
  2. сортировать массив
  3. вывод

Я согласен с Гэри.

Но вы также можете попробовать отсортировать его в запросе базы данных. Предполагая, что это база данных MySQL:

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

Это будет сортировать их, прежде чем они ударят по заявлению foreach.