array_multisort

(PHP 4, PHP 5, PHP 7, PHP 8)

array_multisort — Сортує кілька масивів або багатовимірні масиви

Опис

array_multisort(    array &$array1,    mixed $array1_sort_order = SORT_ASC,    mixed $array1_sort_flags = SORT_REGULAR,    mixed ...$rest): bool

функцією array_multisort() користуються для одночасного сортування кількох масивів або одного багатовимірного масиву за одним або декількома рівнями вкладеності.

Асоціативні рядкові ключі будуть збережені, але числові ключі будуть переіндексовані.

Зауваження :

Якщо обидва порівнювані значення еквівалентні, вони зберігають свій початковий порядок. До PHP 8.0.0 їх відносний порядок у відсортованому масиві не було визначено.

Зауваження :

Скидає внутрішній покажчик масиву перший елемент.

Список параметрів

array1

Сортується масив (array).

array1_sort_order

Порядок, у якому буде відсортовано аргумент-масив (array), заданий перед цим параметром. Дозволено вказувати одну з констант: SORT_ASC для сортування за зростанням, або SORT_DESC для сортування за спаданням.

Цей параметр можна змінювати місцями з параметром array1_sort_flags або не вказувати, тоді за основу буде взято значення SORT_ASC

array1_sort_flags

Налаштування сортування для аргументу-масиву (array), який був вказаний перед цим параметром:

Прапор способу сортування:

  • **SORT_REGULAR**- Звичайне порівняння елементів (без зміни типів)
  • **SORT_NUMERIC**- Порівняння елементів як чисел
  • **SORT_STRING**- Порівняння елементів як рядків
  • **SORT_LOCALE_STRING**- Порівняння елементів як рядків з урахуванням встановленого мовного стандарту (локалі). Буде вибрано мовний стандарт, який дозволено змінювати функцієюsetlocale()
  • **SORT_NATURAL**— порівняння елементів як рядків через алгоритм природного сортування (natural order), як у функціїnatsort()
  • **SORT_FLAG_CASE- Можна об'єднувати (бінарним АБО) зSORT_STRING** або **SORT_NATURAL**для сортування без урахування регістру

Цей аргумент можна міняти місцями з параметром array1_sort_order або не вказувати, тоді за основу буде взято значення SORT_REGULAR

rest

Додаткові масиви, які необов'язково йдуть після порядку сортування та прапорів. Порівнюються лише елементи, які відповідають таким самим елементам у попередніх масивах. Тобто масиви сортуються у лексикографічному порядку.

Значення, що повертаються

Повертає true у разі успішного виконання або **false**в случае возникновения ошибки.

Приклади

Приклад #1 Сортування кількох масивів

Loading...

У наведеному прикладі після закінчення сортування перший масив міститиме значення: 0, 10, 100, 100. Другий — 4, 1, 2, 3. Елементи другого масиву, які відповідають тим самим елементам першого масиву (100 і 100), також будуть відсортовані .

array(4) {
  [0]=> int(0)
  [1]=> int(10)
  [2]=> int(100)
  [3]=> int(100)
}
array(4) {
  [0]=> int(4)
  [1]=> int(1)
  [2]=> int(2)
  [3]=> int(3)
}

Приклад #2 Сортування багатовимірного масиву

Loading...

У наведеному прикладі після закінчення сортування перший масив міститиме значення: "10", 100, 100, 11, "a" (його елементи були відсортовані у порядку, що зростає), а другий масив - 1, 3, "2", 2, 1 (Елементи відсортовані як числа, у порядку спадання).

array(2) {
  [0]=> array(5) {
    [0]=> string(2) "10"
    [1]=> int(100)
    [2]=> int(100)
    [3]=> int(11)
    [4]=> string(1) "a"
  }
  [1]=> array(5) {
    [0]=> int(1)
    [1]=> int(3)
    [2]=> string(1) "2"
    [3]=> int(2)
    [4]=> int(1)
  }
}

Приклад #3 Сортування результатів бази даних

У цьому вся прикладі кожен елемент масиву data — це рядок таблиці. Такий набір даних є типовим для записів бази даних.

Зразкові дані:

# том  | издание
volume | edition
-------+--------
    67 |       2
    86 |       1
    85 |       6
    98 |       2
    86 |       6
    67 |       7

Дані як масиву з ім'ям data. Зазвичай їх можна отримати, наприклад, з циклу функції mysqli_fetch_assoc()

Loading...

У цьому прикладі дані будуть відсортовані по полю volume у спадному порядку, а по полю edition - у зростаючому.

Є масив рядків, але функція array_multisort() вимагає масив стовпців, тому спочатку буде викликаний наступний код, щоб отримати стовпці, а потім дані будуть відсортовані.

Loading...

Тепер дані відсортовані і виглядатимуть так:

volume | edition
-------+--------
    98 |       2
    86 |       1
    86 |       6
    85 |       6
    67 |       2
    67 |       7

Приклад #4 Сортування без урахування регістру

Обидві константи SORT_STRING і SORT_REGULAR враховують регістр при сортуванні, рядки, що починаються з великої літери, будуть виставлені раніше рядків, що починаються з малої літери.

Для реєстронезалежного сортування, потрібно працювати з копією вихідного масиву, приведеного до нижнього регістру.

Loading...

Результат виконання наведеного прикладу:

Array
(
    [0] => Alpha
    [1] => atomic
    [2] => bank
    [3] => Beta
)

Дивіться також