Сортировка множества массивов

Задача
Необходимо отсортировать несколько массивов или многомерный массив.

Решение
Используйте функцию array_multisort():

Чтобы одновременно отсортировать несколько массивов, передайте это множество массивов функции array_multisort():

$colors = array('Red', 'White', 'Blue');
$cities = array('Boston', 'New York', 'Chicago');
array_multisort($colors, $cities);
print_r($colors);
print_r($cities);
Array
(
[0] => Blue
[1] => Red
[2] => White
)
Array
(
[0] => Chicago
[1] => Boston
[2] => New York
)

Чтобы отсортировать несколько измерений внутри одного массива, передайте определенные элементы массива:

$stuff = array('colors' => array('Red', 'White', 'Blue'),
'cities' => array('Boston', 'New York', 'Chicago'));
array_multisort($stuff['colors'], $stuff['cities']);
print_r($stuff);
Array
(
[colors] => Array
(
[0] => Blue
[1] => Red
[2] => White
)
[cities] => Array
(
[0] => Chicago
[1] => Boston
[2] => New York
)
)

Чтобы изменить тип сортировки, как в функции sort(), передайте SORT_REGULAR, SORT_NUMERIC или SORT_STRING после имени массива.


Для изменения порядка сортировки, в отличие от функции sort(), передайте SORT_ASC или SORT_DESC после имени массива. Можно передать как тип, так и порядок сортировки.

Обсуждение
Функция array_multisort() может сортировать несколько массивов одновременно или многомерный массив по одному или более направлений. Массивы трактуются как колонки таблицы, которая должна быть отсортирована по строкам. Первый массив является главным массивом для сортировки; порядок всех элементов других массивов устанавливается на основе порядка сортировки первого массива. Если элементы первого
массива равны, то их порядок определяется вторым массивом, и т. д.

По умолчанию устанавливаются значения сортировки SORT_REGULAR и SORT_ASC, и они переустанавливаются после каждого массива, поэтому нет необходимости передавать какое-либо из этих значений, разве что для ясности.

$numbers = array(0, 1, 2, 3);
$letters = array('a', 'b', 'c', 'd');
array_multisort($numbers, SORT_NUMERIC, SORT_DESC,
$letters, SORT_STRING , SORT_DESC);

Код этого примера обращает массивы.

Оцените статью: (0 голосов)
0 5 0

Статьи из раздела PHP на эту тему:
Добавление одного массива к другому
Изменение длины массива
Инициализация массива диапазоном
Инициализация массива диапазоном целых чисел
Нахождение всех перестановок массива

Вернуться в раздел: PHP / 4. Массивы