Учебник РНР (перевод Alexandr Pyramidin) Размещено на PHPClub.Net
Назад Вперёд

array_multisort

(PHP 4 )

array_multisort - сортирует многомерный или несколько одномерных массивов.

Описание

bool array_multisort ( array ar1 [, mixed arg [, mixed ... [, array ...]]])

array_multisort() может использоваться для сортировки нескольких массивов за раз, или многомерного массива по одному из измерений. Она обслуживает ассоциацию ключей при сортировке.

Массивы на входе рассматриваются как столбцы таблицы, сортируемые по рядам - это напоминает функциональность операции ORDER BY языка SQL. Первый массив будет primary/первичным для сортировки по нему. Одинаковые ряды (значения) в этом массиве сортируются следующим входящим массивом, и так далее.

Структура аргументов этой функции несколько необычна, но достаточно гибка. Самый первый аргумент должен быть массивом. Далее, каждый аргумент может быть массивом или флагом сортировки изи следующих списков:

Флаги порядка сортировки:

  • SORT_ASC - сортировка в порядке возрастания

  • SORT_DESC - сортировка в порядке убывания

Флаги сртировки по типу:

  • SORT_REGULAR - нормальное сравнение элементов

  • SORT_NUMERIC - числовое сравнение элементов

  • SORT_STRING - строковое сравнение элементов

После каждого массива нельзя специфицировать два флага сортировки одного типа. Флаги сортировки, специфицированные после аргумента массива, примеряются только к данному массиву - они восстанавливают значения по умолчанию SORT_ASC и SORT_REGULAR перед каждым новым аргументом массива.

Возвращает TRUE при успехе, FALSE - при неудаче.

Пример 1. Сортировка нескольких массивов

$ar1 = array ("10", 100, 100, "a");
$ar2 = array (1, 3, "2", 1);
array_multisort ($ar1, $ar2);

В этом примере, после сортировки, первый массив будет содержать 10, "a", 100, 100. Второй массив будет содержать 1, 1, "2", 3. Вхождения второго массива, соответствующие идентичным вхождениям первого массива (100 и 100) будут также отсортированы.

Пример 2. Сортировка многомерного массива

$ar = array (array ("10", 100, 100, "a"), array (1, 3, "2", 1));
array_multisort ($ar[0], SORT_ASC, SORT_STRING,
                 $ar[1], SORT_NUMERIC, SORT_DESC);

В этом примере, после сортировки, первый массив будет содержать 10, 100, 100, "a" (они были отсортированы как строки в порядке возрастания), а второй массив будет содержать 1, 3, "2", 1 (отсортированы как числа в порядке убывания).


Назад Оглавление Вперёд
array_merge Вверхarray_pad