Gold Vision Communications / USA
 GOLDVISION.COM
Serving the Multimedia Community since 1989.
English Site | Spanish Site 

 Allgemeines

 Web Hosting

 Virtual Dedicated Servers

 Domaincheck

 Bestellen

 Order Status

 Support

 Kontakt

 Download

 Network

 Network Status

 Webdesign Partner

 Kreditkartenzahlung

 AGB

 Impressum

 Rechtliche Hinweise

 Datenschutz
  PHP / usort
usort

usort

(PHP 3>= 3.0.3, PHP 4 )

usort --  Sortiert ein Array nach Werten mittels einer benutzerdefinierten Vergleichsfunktion.

Beschreibung

void usort ( array array, string 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.

Die Vergleichsfunktion muss einen Integer zurückgeben, der kleiner, gleich, oder größer ist als NULL, wenn für das erste Argument auch angenommen wird, dass es kleiner, gleich, oder größer ist als das zweite. Sind zwei Elemente gleich, ist deren Reihenfolge nicht definiert.

Beispiel 1. usort()

function cmp ($a, $b) {
    if ($a == $b) return 0;
    return ($a > $b) ? -1 : 1;
}

$a = array (3, 2, 5, 6, 1);

usort ($a, "cmp");

while (list ($key, $value) = each ($a)) {
    echo "$key: $value\n";
}

Dieses Beispiel würde folgendes anzeigen:

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

Anmerkung: Offensichtlich würde rsort() für diesen einfachen Fall besser passen.

Beispiel 2. usort() Beispiel mit einem mehrdimensionalen Array

function cmp ($a, $b) {
    return strcmp($a["fruit"], $b["fruit"]);
}

$fruits[0]["fruit"] = "Zitronen";
$fruits[1]["fruit"] = "Äpfel";
$fruits[2]["fruit"] = "Trauben";

usort($fruits, "cmp");

while (list ($key, $value) = each ($fruits)) {
    echo "\$fruits[$key]: " . $value["fruit"] . "\n";
}

Wird ein mehrdimensionales Array sortiert, enthalten $a und $b Referenzen zu dem ersten Index des Arrays.

Dieses Beispiel würde folgendes anzeigen:

$fruits[0]: Äpfel
$fruits[1]: Trauben
$fruits[2]: Zitronen

Anmerkung: Anstelle eines Funktionsnamens kann auch ein Array mit einer Objekt-Referenz und dem Namen einer Methode angegeben werden.

Beispiel 3. usort() mit Verwendung einer Member Funktion eines Objektes

class TestObj {
    var $name;

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

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

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

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

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

Dieses Beispiel würde folgendes anzeigen:

b
c
d

Warnung

Die zugrundeliegende quicksort Funktion in machen C Bibliotheken (wie z.B. Solaris Systeme) könnte einen PHP Crash verursachen, wenn die Vergleichsfunktion keine gleichbleibenden Werte zurückgibt.

Siehe auch uasort(), uksort(), sort(), asort(), arsort(),ksort(), natsort() und rsort().


© 1998-2007 Gold Vision Communications All Rights Reserved.