В этом примере каждый элемент массива data представляет
строку таблицы. Такой набор данных типичен
для записей базы данных.
# том | издание
volume | edition
-------+--------
67 | 2
86 | 1
85 | 6
98 | 2
86 | 6
67 | 7
Данные в виде массива с названием data. Такие
данные часто получают в цикле функцией наподобие mysqli_fetch_assoc().
В следующем примере функция отсортирует данные по полю volume
по убыванию, а по полю edition — по возрастанию.
Мы получили массив строк базы данных, но функция array_multisort()
требует массив столбцов, поэтому сначала вызовем код, который
получит столбцы, а затем отсортируем данные.
<?php
// Данные наподобие тех, которые создаёт функция mysqli_fetch_assoc при переборе результатов запроса в цикле:
$data[] = array('volume' => 67, 'edition' => 2);
$data[] = array('volume' => 86, 'edition' => 1);
$data[] = array('volume' => 85, 'edition' => 6);
$data[] = array('volume' => 98, 'edition' => 2);
$data[] = array('volume' => 86, 'edition' => 6);
$data[] = array('volume' => 67, 'edition' => 7);
// Получаем список столбцов
foreach ($data as $key => $row) {
$volume[$key] = $row['volume'];
$edition[$key] = $row['edition'];
}
// Получение тех же данных функцией array_column() вместо перебора
$volume = array_column($data, 'volume');
$edition = array_column($data, 'edition');
// Сортируем данные по полю volume по убыванию и по полю edition по возрастанию
// Добавляем переменную $data в качестве последнего параметра, для сортировки по общему ключу
array_multisort($volume, SORT_DESC, $edition, SORT_ASC, $data);
// Перебираем данные и выводим отсортированные значения для каждого столбца
echo 'volume | edition', PHP_EOL;
echo '-------+--------', PHP_EOL;
for ($i = 0; $i < count($data); $i++) {
printf("%6d | %7d\n", $volume[$i], $edition[$i]);
}
?>
Функция отсортировала набор данных и теперь он выглядит вот так:
volume | edition
-------+--------
98 | 2
86 | 1
86 | 6
85 | 6
67 | 2
67 | 7