Forum und email

array_multisort

(PHP 4, PHP 5)

array_multisort — Triediť viac polí alebo multi-dimenzionálne polia

Popis

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

array_multisort() sa môže použiť na triedenie niekoľkých polí naraz alebo multi-dimenzionálne pole podľa jednej z viacerých dimenzií. Počas reindexovania numerických kľúčov sa sa asociatívne (reťazcové) kľúče zachovajú.

Vstupné polia sa spracujú ako stĺpce tabuľky, ktorá sa má triediť podľa riadkov - toto sa podobá klauzule SQL ORDER BY. Prvé pole je primárne, podľa ktorého sa zoraďuje. Riadky (hodnoty) v tom poli, ktoré porovnávajú rovnako, sa triedia podľa ďalšieho vstupného poľa atď.

Štruktúra argumentu tejto funkcie je mierne nezvyčajná, ale flexibilná. Úplne prvý argument musí byť pole. Následne, každý argument môže byť buď pole alebo triediaca návesť z následujúcich zoznamov.

Návesti smeru zoradenia:

  • SORT_ASC - zoradiť vzostupne
  • SORT_DESC - zoradiť zostupne

Návestia typov zoradenia:

  • SORT_REGULAR - porovnávať položky normálne
  • SORT_NUMERIC - porovnávať položky číselné
  • SORT_STRING - porovnávať položky ako reťazce

Po každom poli môžte špecifikovať jednu návesť každého typu. Trediace návesti špecifikované po argumente poľa sa aplikujú iba na toto pole - pred každým novým argumentom poľa sa resetujú na defaultné ORT_ASC a SORT_REGULAR.

Vracia TRUE pri úspechu alebe FALSE pri chybe.

Example#1 Triedenie viacerých polí

<?php
$ar1 
= array("10"100100"a");
$ar2 = array(13"2"1);
array_multisort($ar1$ar2);
?>

V tomto príklade bude po zotriedení prvé pole obsahovať 10, "a", 100, 100. Druhé pole bude obsahovať 1, 1, "2", 3. Položky v druhom poli zodpovedajúce identickým položkám v prvom poli (100 a 100) boli tiež zotriedené.

Example#2 Triedenie multi-dimenzionálneho poľa

<?php
$ar 
= array(array ("10"100100"a"), array (13"2"1));
array_multisort($ar[0], SORT_ASCSORT_STRING,
                
$ar[1], SORT_NUMERICSORT_DESC);
?>

V tomto príklade bude po zotriedení prvé pole obsahovať 10, 100, 100, "a" (bolo zotriedené ako reťazce v vzostupnom poradí) a druhé bude obsahovať 1, 3, "2", 1 (zoradené ako čísla v zostupnom poradí).