strcoll în PHP

Compară două texte după regulile de sortare ale limbii setate cu setlocale.

Sintaxă
strcoll(string $string1, string $string2): int

Ce face strcoll

strcmp compară octeții, deci pune literele cu diacritice după „z”. strcoll folosește regulile de sortare ale locale-ului LC_COLLATE, așa că, în română, „ă” vine după „a” și înainte de „b”.

Rezultatul depinde de setarea instalată pe server și de sistemul de operare. Pentru o sortare românească sigură, pe orice server, folosește clasa Collator din extensia intl.

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: Sortare cu strcmp și cu strcoll

<?php
$orase = ["Zalău", "Ștei", "Arad", "Sibiu", "Țăndărei", "Bacău"];

usort($orase, "strcmp");
echo implode(", ", $orase) . "\n";

setlocale(LC_COLLATE, "ro_RO.UTF-8");
usort($orase, "strcoll");
echo implode(", ", $orase);

Rezultat

Arad, Bacău, Sibiu, Zalău, Ștei, Țăndărei
Arad, Bacău, Sibiu, Ștei, Țăndărei, Zalău

Greșeli frecvente

  • Folosești strcoll fără setlocale(LC_COLLATE, ...) și obții aceeași ordine ca la strcmp.

Comenzi înrudite

  • strcmp / strcasecmp / strncmp: Compară două texte și spune dacă primul este mai mic, egal sau mai mare decât al doilea.
  • setlocale: Setează limba și regiunea (locale) folosite de funcțiile care depind de țară: sortare, clasificarea literelor, formate.
  • sort: Sortează elementele unui tablou crescător. Există și variante pentru descrescător și pentru chei.