PHP - usort
Třída
Metoda - usort
(PHP 4, PHP 5, PHP 7)
Funkce seřadí pole podle hodnot na základě uživatelem definované porovnávací funkce.
Poznámka: Funkce odstraní prvkům pole původní klíče a přiřadí jim nové.
Procedurální
Parametry
Název | Datový typ | Výchozí hodnota | Popis |
---|---|---|---|
&$array | array | Pole, které chceme seřadit. | |
$value_compare_func | callable | Určuje porovnávací funkci. Funkce musí vrátit celé záporné číslo, když je první argument funkce menší než argument druhý, celé kladné číslo pokud je větší nebo nulu pokud jsou stejné. |
Návratové hodnoty
Vrací: bool
Vrací true
v případě úspěchu, jinak vrací
false
.
Příklady
V první ukázce seřadíme jména podle jejich délky.
<?php
// Pole, které chceme seřadit:
$jmena = array("Eliška", "Kristýna", "Ema", "Lucie", "Anna", "Barbora");
// Námi definovaná funkce porovnává délku jmen:
function porovnej_delku_jmen($jmeno1, $jmeno2) {
if (strlen($jmeno1) == strlen($jmeno2)) {
return 0;
} else {
return (strlen($jmeno1) < strlen($jmeno2)) ? -1 : 1;
}
}
// Seřadíme naše pole pomocí naší funkce:
usort($jmena, "porovnej_delku_jmen");
// Vypíšeme prvky pole:
foreach ($jmena as $jmeno) {
echo $jmeno . "<br>";
}
V druhé ukázce seřadíme uživatele (asociativní pole) podle jejich příjmení.
<?php
// Asociativní pole, které seřadíme:
$uzivatele = array(
array("jmeno" => "John", "prijmeni" => "Rambo", "vek" => 30),
array("jmeno" => "Chuck", "prijmeni" => "Norris", "vek" => 40),
array("jmeno" => "John", "prijmeni" => "McClane", "vek" => 35),
array("jmeno" => "Rocky", "prijmeni" => "Balboa", "vek" => 25),
array("jmeno" => "James", "prijmeni" => "Bond", "vek" => 35),
);
// Funkce využívá vestavěnou porovnávací funkci strnatcmp()
function porovnej_primeni($uzivatel1, $uzivatel2) {
return strnatcmp($uzivatel1["prijmeni"], $uzivatel2["prijmeni"]);
}
usort($uzivatele, "porovnej_primeni");
foreach ($uzivatele as $uzivatel) {
print_r($uzivatel);
echo "<br>";
}