Funkcja PHP array_multisort() -- sortowanie kilku tablic | #! Shebang

Funkcja PHP array_multisort()

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:

funkcja php array_multisort - przykładowe tablice przed posortowaniem
Tablice przed posortowaniem przez funkcję PHP array_multisort()

Zawartość tablic po posortowaniu:

funkcja php array_multisort() - przykładowe tablice po posortowaniu
Tablice po posortowaniu przez funkcję PHP array_multisort()

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.

Funkcja PHP 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:
  • SORT_ASC — sortowanie w porządku rosnącym (domyślne)
  • SORT_DESC — sortowanie w porządku malejącym
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:
  • SORT_REGULAR — wartość domyślna, oznaczająca normalne porównywanie
  • SORT_NUMERIC — porównywanie numeryczne
  • SORT_STRING — porównywanie jako łańcuchy znaków
  • SORT_LOCALE_STRING — porównywanie jako łańcuchy znaków na podstawie obecnej lokalizacji, którą można ustawić za pomocą funkcji setlocale()
  • SORT_NATURAL — porównywanie jako łańcuchy przy użyciu algorytmu uporządkowania naturalnego
  • SORT_FLAG_CASE — można łączyć za pomocą bitowego operatora OR z opcjami SORT_STRING i SORT_NATURAL, aby sortować jako łańcuchy bez rozróżniania wielkości liter.
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.

Udostępnij:
Share

Podobał Ci się ten artykuł?

Oceń go!

Średnia 5 / 5. Liczba głosów: 4

Jeszcze nikt nie głosował. Wyprzedź innych i zagłosuj.

Skoro spodobał Ci się ten artykuł...

Poleć go znajomym!

Ojej :( Powiedz nam, co powinniśmy poprawić!

blank
Podoba Ci się ta strona?

Pomóż nam się rozwijać, wykupując płatne konto. Dzięki temu będziemy mogli tworzyć dla Ciebie jeszcze więcej ciekawych treści, a Ty pozbędziesz się reklam.

Dodaj komentarz