Создание двумерного массива из записей MySQL в PHP
У меня есть следующий код:
while($row12 = mysql_fetch_array($result12)) {
$position = $row12['position'];
$tot[$k] = $row12['total'];
$k++;
}
$arr = arsort($tot);
for($x = 0; $x < $k; $x++) {
echo $tot[$x]."<br>";
}
Я был в состоянии создать массив итогов из записей базы данных, но мне нужно отсортировать значения в порядке убывания.
Например, перед сортировкой:
- 107
- 563
- 109
- 246
- +897
и после сортировки:
- +897
- 563
- 246
- 109
- 107
1 ответ
arsort поддерживает ключи массива, поэтому, если вы начнете с
0 => 100
1 => 50
2 => 75
3 => 25
Вы закончите с
0 => 100
2 => 75
1 => 50
3 => 25
Который - на первый взгляд - кажется, что вы хотите. Проблема в том, что вы затем просматриваете их и отображаете их в порядке клавиш 0, 1, 2, 3 в вашем for($x = 0; $x < $k; $x++)
петля.
Одним из решений этого было бы использовать foreach
вместо:
foreach ($tot as $number_to_display) {
echo $number_to_display . "<br>";
}
который будет циклически проходить по ним в порядке массива, а не последовательно итерировать ключи, как вы пытались.
Как было отмечено выше, лучшим решением будет использование условия сортировки в вашем SQL, что-то вроде:
ORDER BY total DESC