Forum und email
array_multisort

array_multisort

(PHP 4, PHP 5)

array_multisort -- Třídit více polí, nebo vícerozměrné pole

Popis

bool array_multisort ( array ar1 [, mixed arg [, mixed ... [, array ...]]] )

array_multisort() se dá využít k třídění několika polí najednou nebo k třídění vícerozměrného pole XXX according by one of more dimensions. Při třídění udržuje asociace klíčů.

Vstupní pole jsou manipulována jako sloupce tabulky, která se má třídit podle řádků - připomíná to funkcionalitu SQL klauzule ORDER BY. První pole je to, podle kterého se bude třídit. Řádky (hodnoty) v tomto poli that compare the same are sorted by the next input array, and so on.

Struktura argumentů této funkce je trochu neobvyklá, ale pružná. První argument musí být pole. Každý další argument může být buď pole nebo jeden z příznak z následujících seznamů:

Příznaky směru třídění:

  • SORT_ASC - třídit vzestupně

  • SORT_DESC - třídit sestupně

Příznaky typu třídění:

  • SORT_REGULAR - porovnávat položky normálně

  • SORT_NUMERIC - porovnávat položky číselně

  • SORT_STRING - porovnávat položky jako řetězce

Po každém poli můžete specifikovat jeden příznak každého typu. Příznaky třídění specifikované po každém poli platí pouze pro toto pole - pro další pole se resetují na defaultní SORT_ASC a SORT_REGULAR.

Při úspěchu vrací TRUE, při selhání FALSE.

Příklad 1. Třídění více polí

$ar1 = array ("10", 100, 100, "a");
$ar2 = array (1, 3, "2", 1);
array_multisort ($ar1, $ar2);

V této ukázce bude po setřídění první pole obsahovat 10, "a", 100, 100. Druhé pole bude obsahovat 1, 1, 2, "3". Položky druhého pole odpovídající identickým položkám v prvním poli (100 a 100) byly také setříděny.

Příklad 2. Třídění vícerozměrného pole

$ar = array (array ("10", 100, 100, "a"), array (1, 3, "2", 1));
array_multisort ($ar[0], SORT_ASC, SORT_STRING,
                 $ar[1], SORT_NUMERIC, SORT_DESC);

V této ukázce bude po setřídění první pole obsahovat 10, 100, 100, "a" (bylo tříděno vzestupně jako řetězce) a druhé pole bude obsahovat 1, 3, "2", 1 (tříděno jako čísla, sestupně).