Создание двухмерного массива из записей MySQL в Stack Overflow

У меня есть следующий код:

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
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]