Signatur
Beschreibung
collator_sort() sortiert ein Array anhand der Vergleichsregeln eines Collator-Objekts. Im Gegensatz zur Standard-PHP-Funktion sort() werden dabei die sprachspezifischen Sortierregeln des gewählten Gebietsschemas (Locale) korrekt berücksichtigt – beispielsweise die Einordnung von Umlauten (ä, ö, ü) im Deutschen oder die Behandlung von Akzentzeichen im Französischen.
Die Funktion arbeitet direkt auf dem übergebenen Array (Übergabe per Referenz) und verändert es in-place. Der Rückgabewert gibt an, ob die Sortierung erfolgreich war. Über den Parameter $flags kann gesteuert werden, ob Elemente als Zeichenketten (Collator::SORT_STRING), numerische Werte (Collator::SORT_NUMERIC) oder automatisch (Collator::SORT_REGULAR) behandelt werden sollen.
Die prozedurale Funktion collator_sort() ist die funktionale Entsprechung zur objektorientierten Methode Collator::sort(). Für die Verwendung ist die PHP-Erweiterung intl erforderlich.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $object Pflicht | Collator | Eine Collator-Instanz, die das zu verwendende Gebietsschema und die Sortierregeln definiert. |
|
| $array Pflicht | array | Das zu sortierende Array. Es wird per Referenz übergeben und direkt verändert. | |
| $flags | int | Collator::SORT_REGULAR | Optionaler Sortiertyp. Mögliche Werte: Collator::SORT_REGULAR (automatische Typauswahl), Collator::SORT_STRING (als Zeichenketten vergleichen), Collator::SORT_NUMERIC (als Zahlen vergleichen). |
Rückgabewert
true bei Erfolg zurück, false im Fehlerfall (z. B. wenn das Collator-Objekt ungültig ist).Beispiele
Deutsche Sortierung mit Umlauten
<?php
// Erstellt einen Collator für das deutsche Gebietsschema
$collator = collator_create('de_DE');
$woerter = ['Zebra', 'Apfel', 'Österreich', 'Banane', 'Ähre', 'Zitrone'];
collator_sort($collator, $woerter);
print_r($woerter);
Numerische Sortierung mit SORT_NUMERIC
<?php
$collator = collator_create('en_US');
$werte = ['10 Punkte', '2 Punkte', '20 Punkte', '1 Punkt'];
// Mit SORT_STRING (Standard für Strings)
collator_sort($collator, $werte, Collator::SORT_STRING);
echo "Zeichenketten-Sortierung:\n";
print_r($werte);
// Array zurücksetzen
$werte = ['10 Punkte', '2 Punkte', '20 Punkte', '1 Punkt'];
// Numerisch sortieren
collator_sort($collator, $werte, Collator::SORT_NUMERIC);
echo "Numerische Sortierung:\n";
print_r($werte);
// Wichtig · Fallstricke
Voraussetzung: Die PHP-Erweiterung intl muss installiert und aktiviert sein. Ohne sie steht weder collator_sort() noch die Klasse Collator zur Verfügung.
Array-Schlüssel: collator_sort() setzt die numerischen Schlüssel des Arrays zurück (ähnlich wie sort()). Sollen die Schlüssel erhalten bleiben, ist collator_asort() zu bevorzugen.
Locale-Einstellungen: Das korrekte Gebietsschema ist entscheidend für das Sortierergebnis. Ein falsches Locale kann zu unerwartetem Verhalten führen. Es empfiehlt sich, das Locale explizit zu setzen, anstatt auf System-Standardwerte zu vertrauen.