natsort / natcasesort în PHP

Sortează un tablou în „ordine naturală”, cum ar ordona un om: img2 înainte de img10.

Sintaxă
natsort(array &$array): true

Ce face natsort / natcasesort

Sortarea obișnuită compară textele caracter cu caracter, așa că "img10" ajunge înaintea lui "img2". natsort recunoaște numerele din text și le compară ca numere.

natsort face diferența între litere mari și mici: majusculele vin înaintea literelor mici. natcasesort face aceeași sortare, dar ignoră majusculele. Ambele păstrează cheile și modifică direct tabloul.

Parametri

Parametru Descriere
$array Tabloul sortat. Este modificat direct.

Ce returnează

Întotdeauna true.

Exemple

Exemplul 1: sort față de natsort

<?php
$fisiere = ["img12.png", "img10.png", "img2.png", "img1.png"];

$simplu = $fisiere;
sort($simplu);
echo implode(", ", $simplu) . "\n";

natsort($fisiere);
echo implode(", ", $fisiere);

Rezultat

img1.png, img10.png, img12.png, img2.png
img1.png, img2.png, img10.png, img12.png

Exemplul 2: Majuscule: natsort și natcasesort

Cheile originale se păstrează. Folosește array_values dacă vrei chei 0, 1, 2…

<?php
$fisiere = ["img12.png", "img10.png", "IMG2.png", "img1.png"];

natsort($fisiere);
print_r($fisiere);

natcasesort($fisiere);
print_r($fisiere);

Rezultat

Array
(
    [2] => IMG2.png
    [3] => img1.png
    [1] => img10.png
    [0] => img12.png
)
Array
(
    [3] => img1.png
    [2] => IMG2.png
    [1] => img10.png
    [0] => img12.png
)

Greșeli frecvente

  • Scrii $sortat = natsort($lista);. Funcția returnează true și modifică tabloul primit.

Comenzi înrudite

  • sort: Sortează elementele unui tablou crescător. Există și variante pentru descrescător și pentru chei.
  • array_multisort: Sortează mai multe tablouri deodată sau un tabel după mai multe coloane.
  • array_keys / array_values: Returnează doar cheile (array_keys) sau doar valorile (array_values) unui tablou.