Ce face strnatcmp / strnatcasecmp
Comparația obișnuită (strcmp) pune img10 înaintea lui img2, pentru că se uită caracter cu caracter, iar „1” este mai mic decât „2”. strnatcmp recunoaște numerele din text și le compară ca numere, așa cum ar face un om.
strnatcasecmp face același lucru, dar nu ține cont de litere mari și mici. Ambele returnează un număr negativ, 0 sau pozitiv, ca strcmp.
Parametri
| Parametru | Descriere |
|---|---|
$string1 |
Primul text. |
$string2 |
Al doilea text. |
Ce returnează
Un număr negativ, 0 sau un număr pozitiv.
Exemple
Exemplul 1: Comparație obișnuită și naturală
<?php
echo (strcmp("img2", "img10") <=> 0) . "\n";
echo (strnatcmp("img2", "img10") <=> 0);
Rezultat
1
-1
Exemplul 2: Sortarea numelor de fișiere
<?php
$fisiere = ["Poza10.jpg", "poza2.jpg", "poza1.jpg", "Poza21.jpg"];
usort($fisiere, "strnatcasecmp");
echo implode(", ", $fisiere);
Rezultat
poza1.jpg, poza2.jpg, Poza10.jpg, Poza21.jpg
Greșeli frecvente
- Sortezi liste de versiuni (
1.10,1.9) cusortși obții ordinea greșită. Foloseșteusort($lista, "strnatcmp")sauversion_comparepentru versiuni.
Comenzi înrudite
strcmp / strcasecmp / strncmp: Compară două texte și spune dacă primul este mai mic, egal sau mai mare decât al doilea.sort: Sortează elementele unui tablou crescător. Există și variante pentru descrescător și pentru chei.