natsort
natsort($pole)
Seřadí pole „přirozeně“: čísla uvnitř textů porovnává jako čísla, takže img2 je před img10. Klíče u hodnot zachovává, pole mění přímo a vrací true.
Parametry
- $pole – řazené pole. Musí to být proměnná.
Příklady
$soubory = array("img12.png", "img10.png", "img2.png", "img1.png");
natsort($soubory);
echo implode(",", $soubory); // img1.png,img2.png,img10.png,img12.png
// klíče zůstávají u svých hodnot
echo implode(",", array_keys($soubory)); // 3,2,1,0
// přečíslování od nuly
echo json_encode(array_values($soubory)); // ["img1.png","img2.png","img10.png","img12.png"]
// sort řadí znak po znaku
sort($soubory);
echo implode(",", $soubory); // img1.png,img10.png,img12.png,img2.png
// velká písmena jsou před malými
$nazvy = array("b1", "A2", "a1");
natsort($nazvy);
echo implode(",", $nazvy); // A2,a1,b1
// znaménko minus nebere jako součást čísla
$cisla = array("-5", "3", "-2");
natsort($cisla);
echo implode(",", $cisla); // -2,-5,3
Na co si dát pozor
- Klíče zůstávají u hodnot. Průchod cyklem for podle indexu nebo převod na JSON proto vrátí původní pořadí – pole nejdřív přečíslujte přes array_values(), nebo ho procházejte cyklem foreach.
- Rozlišuje velikost písmen, velká jsou před malými. Bez rozlišení řadí natcasesort().
- Pro skutečná čísla se nehodí. Záporná a desetinná čísla neřadí podle hodnoty, na ta je sort().
- Česky neřadí, písmena s diakritikou skončí až za „z“.
- Čísla verzí (1.2.10) spolehlivěji porovná version_compare() v usort().
Příbuzné funkce:
natcasesort()
strnatcmp()
sort()