Array multisort()
array_multisort
(PHP 4, PHP 5, PHP 7, PHP 8)
array_multisort — Sorterar flera eller flerdimensionella arrayer
Beskrivning
array_multisort(
array &$array1, mixed $array1_sort_order = SORT_ASC, mixed $array1_sort_flags = SORT_REGULAR, mixed ...$rest
): bool array_multisort() kan användas för att sortera flera arrayer samtidigt eller en flerdimensionell array efter en eller flera dimensioner.
Associativa (sträng) nycklar kommer att bibehållas, men numeriska nycklar kommer att återindexeras.
Notera:
Om två element jämförs som lika behåller de sin ursprungliga ordning. Före PHP 8.0.0 var deras relativa ordning i den sorterade arrayen odefinierad.
Notera:
Återställer arrayens interna pekare till det första elementet.
Parametrar
- array1
- En array som sorteras.
- array1_sort_order
- Den ordning som används för att sortera det föregående arrayargumentet. Antingen SORT_ASC för att sortera stigande eller SORT_DESC för att sortera fallande.
Detta argument kan bytas ut mot array1_sort_flags eller utelämnas helt, i vilket fall SORT_ASC antas.
- array1_sort_flags
- Sorteringsalternativ för det föregående arrayargumentet:
Sorteringstypflaggor:
- SORT_REGULAR - jämför objekt normalt (ändra inte typer)
- SORT_NUMERIC - jämför objekt numeriskt
- SORT_STRING - jämför objekt som strängar
- SORT_LOCALE_STRING - jämför objekt som strängar, baserat på aktuell lokal inställning. Använder lokalinställningen, som kan ändras med setlocale()
- SORT_NATURAL - jämför objekt som strängar med "naturlig ordning" som natsort()
- SORT_FLAG_CASE - kan kombineras (bitvis OR) med SORT_STRING eller SORT_NATURAL för att sortera strängar utan att skilja på stora och små bokstäver
Detta argument kan bytas ut mot array1_sort_order eller utelämnas helt, i vilket fall SORT_REGULAR antas.
- rest
- Fler arrayer, eventuellt följt av sorteringsordning och flaggor. Endast element som motsvarar motsvarande element i tidigare arrayer jämförs. Med andra ord är sorteringen lexicografisk.
Returvärden
Returnerar true vid framgång eller false vid misslyckande.
Exempel
Exempel #1 Sortera flera arrayer
<?php $ar1 = array(10, 100, 100, 0); $ar2 = array(1, 3, 2, 4); array_multisort($ar1, $ar2); var_dump($ar1); var_dump($ar2); ?>
I detta exempel kommer den första arrayen att innehålla 0, 10, 100, 100 efter sorteringen. Den andra arrayen kommer att innehålla 4, 1, 2, 3. Posterna i den andra arrayen som motsvarar de identiska posterna i den första arrayen (100 och 100) sorterades också.
Exempel #2 Sortera en flerdimensionell array
<?php $ar = array( array("10", 11, 100, 100, "a"), array( 1, 2, "2", 3, 1) ); array_multisort($ar[0], SORT_ASC, SORT_STRING, $ar[1], SORT_NUMERIC, SORT_DESC); var_dump($ar); ?>
I detta exempel kommer den första arrayen att transformeras till "10", 100, 100, 11, "a" (den sorterades som strängar i stigande ordning). Den andra kommer att innehålla 1, 3, "2", 2, 1 (sorterade som nummer, i fallande ordning).
Se även
- usort() - Sorterar en array efter värden med en användardefinierad jämförelsefunktion
- Jämförelse av arraysorteringsfunktioner