Signatur
Beschreibung
collator_asort() ist die prozedurale Variante von Collator::asort() und sortiert ein Array nach seinen Werten, wobei die ursprünglichen Schlüssel (Indizes) erhalten bleiben. Die Sortierung erfolgt gemäß den sprach- und lokalisierungsspezifischen Regeln des übergebenen Collator-Objekts, das mit einem bestimmten Gebietsschema (Locale) initialisiert wurde.
Im Gegensatz zu PHPs eingebautem asort() versteht collator_asort() sprachspezifische Eigenheiten wie Umlaute (ä, ö, ü), Akzente, Groß-/Kleinschreibungsregeln und sprachspezifische Sortierfolgen. Besonders bei mehrsprachigen Anwendungen oder Textinhalten, die nicht nur ASCII-Zeichen enthalten, ist diese Funktion der nativen PHP-Sortierfunktion vorzuziehen.
Das Verhalten der Sortierung kann über den Parameter $flags gesteuert werden, z. B. ob numerische Zeichenfolgen als Zahlen behandelt werden sollen oder ob eine reine Zeichenketten-Sortierung stattfindet. Die Funktion arbeitet direkt auf dem übergebenen Array (Referenz) und gibt true bei Erfolg zurück.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $object Pflicht | Collator | Ein Collator-Objekt, das das gewünschte Gebietsschema und die Sortierregeln repräsentiert. Wird mit collator_create() oder new Collator() erzeugt. |
|
| $array Pflicht | array | Das zu sortierende Array, wird per Referenz übergeben. Die Schlüssel-Wert-Zuordnung bleibt nach der Sortierung erhalten. | |
| $flags | int | Collator::SORT_REGULAR | Optionale Sortierflags. Mögliche Werte sind Collator::SORT_REGULAR, Collator::SORT_NUMERIC und Collator::SORT_STRING. Steuert, wie die Werte miteinander verglichen werden. |
Rückgabewert
true bei Erfolg zurück, false bei einem Fehler (z. B. wenn das Collator-Objekt ungültig ist).Beispiele
Deutschsprachige Namen mit Umlauten sortieren
<?php
$collator = collator_create('de_DE');
$namen = [
10 => 'Özkan',
20 => 'Müller',
30 => 'Bauer',
40 => 'Ärger',
50 => 'Ziegler',
];
collator_asort($collator, $namen);
foreach ($namen as $key => $name) {
echo $key . ': ' . $name . PHP_EOL;
}
Vergleich zwischen asort() und collator_asort() für schwedische Zeichen
<?php
$worte = [
'a' => 'Zebra',
'b' => 'Åland',
'c' => 'Örn',
'd' => 'Äpple',
'e' => 'Banan',
];
// Natives PHP asort — ignoriert schwedische Sortierregeln
$nativ = $worte;
asort($nativ);
echo "PHP asort:\n";
foreach ($nativ as $k => $v) {
echo $k . ': ' . $v . PHP_EOL;
}
// Collator asort — berücksichtigt schwedisches Alphabet (Å, Ä, Ö kommen nach Z)
$collator = collator_create('sv_SE');
$lokalisiert = $worte;
collator_asort($collator, $lokalisiert);
echo "\ncollator_asort (sv_SE):\n";
foreach ($lokalisiert as $k => $v) {
echo $k . ': ' . $v . PHP_EOL;
}
// Wichtig · Fallstricke
Erweiterungsabhängigkeit: collator_asort() gehört zur intl-Erweiterung (Internationalisierung), die in PHP 5.3 eingeführt wurde. Die Erweiterung muss in der PHP-Installation aktiviert sein (extension=intl in der php.ini).
Nur String-Werte: Die Funktion ist für Arrays mit String-Werten konzipiert. Arrays mit gemischten Typen oder nicht-skalaren Werten können zu unerwarteten Ergebnissen führen.
Objekt-orientierte Alternative: Statt der prozeduralen Variante kann auch die Methode Collator::asort() verwendet werden — beide Varianten sind funktional identisch.