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
)
Дивіться також
- usort() - Сортує масив за значеннями використовуючи функцію користувача для порівняння елементів
- Порівняння функцій сортування масивів