array_multisort

array_multisort - třídí vícenásobné nebo vícerozměrné pole.

Syntaxe:

bool array_multisort ( array &$arr [, mixed $arg = SORT_ASC [, mixed $arg = SORT_REGULAR [, mixed $... ]]] )

Funkce array_multisort() může být použita pro třídění několika polí najednou nebo vícerozměrného pole podle jedne nebo více dimenzí.

Vstupní polí se berou jako sloupce tabulky, kteři se mají třídít podle řádků. Tento přístup se podobá chování SQL příkazu ORDER BY. První pole má prioritu při procesu třídění.

První argument je pole, následující argumenty mohou být jak polí tak i hodnotami určujicímí pořadí třídění. Dostupné hodnoty jsou uvedeny na tomto seznamu:

SORT_ASC - seřadit vzestupně.


SORT_DESC - seřadit sestupně.


SORT_REGULAR - porovnánvat prvky obvyklým způsobem.


SORT_NUMERIC - porovnánvat prvky, jako kdyby byly čísla.


SORT_STRING - porovnánvat prvky, jako kdyby byly řetězcemi.


Vráci TRUE v případě úspěchu a FALSE v případě neúspěchu.

Příklad použíti:

<?php
$ar1 = array(101001000);
$ar2 = array(1324);
array_multisort($ar1$ar2);

var_dump($ar1);
var_dump($ar2);
?>

Výsledek je následující:

array(4) {
  [0]=> int(0)
  [1]=> int(10)
  [2]=> int(100)
  [3]=> int(100)
}
array(4) {
  [0]=> int(4)
  [1]=> int(1)
  [2]=> int(2)
  [3]=> int(3)
}

Ve výsledku vidíme, že po třídění první pole bude obsahovat hodnoty 0, 10, 100, 100, ale druhé pole bude obsahovat 4, 1, 2, 3. Položky ve druhém poli, odpovídající stejným položkam v prvním poli 100 a 100 byly tříděny také.

Příklad použíti pro vícerozměrné pole:

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

Výsledek je následující:

array(2) {
  [0]=> array(5) {
    [0]=> string(2) "10"
    [1]=> int(100)
    [2]=> int(100)
    [3]=> int(11)
    [4]=> string(1) "a"
  }
  [1]=> array(5) {
    [0]=> int(1)
    [1]=> int(3)
    [2]=> string(1) "2"
    [3]=> int(2)
    [4]=> int(1)
  }
}

V tomto příkladě, po třídění první pole bude obsahovat "10", 100, 100, 11, "a" ( třídilo se vzestupně a jako řetězce ). Druhé pole obsahující hodnoty 1, 3, "2", 2, 1 ( třídilo se sestupně a jako čísla )

Viz také: