Start · Sprachen · PHP · Referenz · collator_asort

collator_asort

Funktion

Sortiert ein Array unter Beibehaltung der Schlüssel-Wert-Zuordnung gemäß den Regeln eines <code>Collator</code>-Objekts.

seit PHP 5.3.0 Kategorie: string

Signatur

collator_asort(Collator $object, array &$array, int $flags = Collator::SORT_REGULAR): bool

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

Typ
bool
Beschreibung
Gibt 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;
}
40: Ärger 30: Bauer 20: Müller 10: Özkan 50: Ziegler

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;
}
PHP asort: e: Banan d: Äpple c: Örn a: Zebra b: Åland collator_asort (sv_SE): e: Banan a: Zebra b: Åland d: Äpple c: Örn

// 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.