Funkcja PHP array_multisort() umożliwia „sprzężone” posortowanie kilku tablic na raz lub posortowanie tablicy wielowymiarowej według jednego lub większej liczby wymiarów.
Wszystkie tablice lub wymiary tablicy wielowymiarowej przekazane do funkcji array_multisort() muszą mieć taką samą długość, ponieważ funkcja ta drugą i ewentualnie każdą kolejną tablicę (każdy kolejny wymiar) sortuje według tablicy lub wymiaru przekazanych w pierwszym argumencie.
Inaczej można powiedzieć, że elementy znajdujące się na tych samych pozycjach w strukturach przed sortowaniem są ze sobą „związane” i są przesuwane razem w obrębie swoich struktur. Spójrz na ułożenie elementów tablic z powyższego przykładu przed ich posortowaniem i po posortowaniu:
Zawartość tablic przed posortowaniem:

Zawartość tablic po posortowaniu:

Jak widać, po posortowaniu elementy w drugiej tablicy nadal odpowiadają tym samym elementom w pierwszej.
Kolejność elementów w drugiej tablicy może się zmienić tylko w przypadku, gdy w pierwszej tablicy znajdują się przynajmniej dwa takie same elementy. Wówczas można określić sposób sortowania odpowiadających im elementów w drugiej tablicy, np.:
$a = [23, 12, 47, 17, 17, 17];
$b = ["a", "j", "g", "h", "c", "w"];
array_multisort($a, $b);
array_multisort($a, $b, SORT_DESC);Pierwsze z powyższych wywołań funkcji array_multisort() posortuje elementy rosnąco, ponieważ takie jest ustawienie domyślne. Drugie wywołanie posortuje elementy drugiej tablicy malejąco — ale tylko te, które odpowiadają trzem jednakowym wartościom (17) z pierwszej tablicy.
Po lewej stronie znajduje się wynik pierwszego wywołania funkcji array_multisort(), a po prawej — drugiego:
Array
(
[0] => 12
[1] => 17
[2] => 17
[3] => 17
[4] => 23
[5] => 47
)
Array
(
[0] => j
[1] => c
[2] => h
[3] => w
[4] => a
[5] => g
) Array
(
[0] => 12
[1] => 17
[2] => 17
[3] => 17
[4] => 23
[5] => 47
)
Array
(
[0] => j
[1] => w
[2] => h
[3] => c
[4] => a
[5] => g
)
W tym przypadku w drugiej tablicy zmieniła się tylko kolejność elementów c, h i w, które odpowiadają elementom 17 z pierwszej tablicy.
array_multisort() zachowuje klucze sortowanych elementów bez zmian, natomiast przelicza indeksy.Składnia funkcji PHP array_multisort()
Funkcja PHP array_multisort() ma następującą składnię:
array_multisort(
array &$array1,
mixed $array1_sort_order = SORT_ASC,
mixed $array1_sort_flags = SORT_REGULAR,
mixed ...$rest
): bool
Parametry
| Parametr | Opis |
|---|---|
| array1 | Parametr obowiązkowy. Tablica do posortowania. |
| array1_sort_order | Porządek sortowania tablicy określonej w poprzednim argumencie. Dostępne są dwie wartości:
Wartość argumentu array1_sort_order można przekazywać w dowolnej kolejności z wartością argumentu array1_sort_flags. |
| array1_sort_flags | Opcje sortowania tablicy określonej w poprzednim argumencie. Dostępne są następujące wartości:
|
| rest | Kolejne tablice, opcjonalnie z argumentami określającymi porządek i opcje sortowania. W kolejnych tablicach sortowane są tylko te elementy, które odpowiadają elementom uznanym za równe sobie w poprzednich tablicach. Jest to sortowanie leksykograficzne. |
Wartość zwrotna
Funkcja PHP array_multisort() zwraca wartość logiczną true w przypadku powodzenia lub false w przeciwnym przypadku.
Typ zwrotny: bool.
