Array Funktionen
PHP Manual

usort

(PHP 4, PHP 5)

usortSortiert ein Array nach Werten mittels einer benutzerdefinierten Vergleichsfunktion

Beschreibung

bool usort ( array &$array , callback $cmp_function )

Diese Funktion sortiert ein Array nach seinen Werten mittels einer benutzerdefinierten Vergleichsfunktion. Soll das Array nach nicht trivialen Kriterien sortiert werden, sollten Sie diese Funktion verwenden.

Hinweis: Wenn zwei Elemente als gleich verglichen werden, ist ihre Reihenfolge im sortierten Array undefiniert.

Hinweis: Diese Funktion weist den Elementen des Arrays array neue Schlüssel zu. Bestehende Schlüssel, die Sie eventuell zugewiesen haben, werden entfernt statt einfach nur die Schlüssel neu anzuordnen

Parameter-Liste

array

Das zu sortierende Array.

cmp_function

Die Vergleichsfunktion muss einen Integerwert kleiner als, gleich oder größer als 0 zurückgeben je nachdem ob das erste übergebene Argument kleiner als, gleich oder größer als das zweite ist.

Rückgabewerte

Gibt bei Erfolg TRUE zurück, im Fehlerfall FALSE.

Changelog

Version Beschreibung
4.1.0 Es wurde ein neuer Sotieralgorithmus eingeführt, die Reihenfolge von Elementen die von cmp_function als gleich bewertet wurden bleibt nun nicht mehr erhalten.

Beispiele

Beispiel #1 usort()-Beispiel

<?php
function cmp($a$b)
{
    if (
$a == $b) {
        return 
0;
    }
    return (
$a $b) ? -1;
}

$a = array(32561);

usort($a"cmp");

foreach (
$a as $key => $value) {
    echo 
"$key$value\n";
}
?>

Das oben gezeigte Beispiel erzeugt folgende Ausgabe:

0: 1
1: 2
2: 3
3: 5
4: 6

Hinweis: Für dieses einfache Beispiel wäre die sort()-Funktion offensichtlich die bessere Wahl.

Beispiel #2 usort()-Beispiel für multidimensionale Arrays

<?php
function cmp($a$b)
{
    return 
strcmp($a["frucht"], $b["frucht"]);
}

$fruechte[0]["frucht"] = "Zitronen";
$fruechte[1]["frucht"] = "Aepfel";
$fruechte[2]["frucht"] = "Orangen";

usort($fruechte"cmp");

while (list(
$key$value) = each($fruits)) {
    echo 
"\$fruechte[$key]: " $value["frucht"] . "\n";
}
?>

Wenn ein mehrdimensionales Array sortiert wird, enthalten $a und $b Verweise auf den ersten Index des Arrays.

Das oben gezeigte Beispiel erzeugt folgende Ausgabe:

$fruechte[0]: Aepfel
$fruechte[1]: Orangen
$fruechte[2]: Zitronen

Beispiel #3 usort()-Beispiel, das die Methode eines Objekts benutzt

<?php
class TestObj {
    var 
$name;

    function 
TestObj($name)
    {
        
$this->name $name;
    }

    
/* Dies ist die statische Vergleichsfunktion */
    
static function cmp_obj($a$b)
    {
        
$al strtolower($a->name);
        
$bl strtolower($b->name);
        if (
$al == $bl) {
            return 
0;
        }
        return (
$al $bl) ? +: -1;
    }
}

$a[] = new TestObj("c");
$a[] = new TestObj("b");
$a[] = new TestObj("d");

usort($a, array("TestObj""cmp_obj"));

foreach (
$a as $item) {
    echo 
$item->name "\n";
}
?>

Das oben gezeigte Beispiel erzeugt folgende Ausgabe:

b
c
d

Siehe auch


Array Funktionen
PHP Manual