Результаты запроса к базе данных иногда невозможно использовать напрямую, например, результаты, полученные с помощью оператора in в mysql, поэтому результаты необходимо каким-то образом отсортировать.
Пример 4. Сортировка результатов базы данных
. В этом примере каждая ячейка массива данных представляет собой строку таблицы. Это типичный набор данных, записанных в базе данных.
Данные в примере следующие:
том |
-------+--------
67 | 2
86 | 1
85 | 6
98 | 2
86 | 6
67 | 7
Все данные хранятся в массиве с именем data. Обычно это получается из базы данных с помощью цикла, например mysql_fetch_assoc().
$data[] = array('volume' => 67, 'edition' => 2);
$data[] = array('объем' => 86, 'издание' => 1);
$data[] = array('volume' => 85, 'edition' => 6);
$data[] = array('объем' => 98, 'издание' => 2);
$data[] = array('volume' => 86, 'edition' => 6);
$data[] = array('объем' => 67, 'издание' => 7);
?>
http://sucai.knowsky.com/
В этом примере том будет отсортирован по убыванию, а издание — по возрастанию.
Теперь у вас есть массив со строками, но для array_multisort() требуется массив со столбцами, поэтому используйте следующий код, чтобы получить столбцы и затем отсортировать их.
// Получаем список столбцов
foreach ($data as $key => $row) {
$volume[$key] = $row['volume'];
$edition[$key] = $row['edition'];
}
// Располагаем данные в порядке убывания по объему и в порядке возрастания по изданию
// Используем $data в качестве последнего параметра, сортируем по общему ключу
array_multisort($volume, SORT_DESC, $edition, SORT_ASC, $data);
?>
Сбор данных теперь отсортирован, и результаты следующие:
том |
-------+--------
98 | 2
86 | 1
86 | 6
85 | 6
67 | 2
67 | 7