ullibolle2: Mehrdimensionales Array, Objekt, Sort

Hallo,

mein Array schaut so aus:

Array
(
    [0] => stdClass Object
        (
            [username] => root
            [passwd] => xxxxxxxx
            [email] => abc@abc.de
        )

[1] => stdClass Object
        (
            [username] => root2
            [passwd] => xxxxxxxx
            [email] => abcdef@abcdef.de
        )

.... usw.
 )

Ich versuche nun das array zu sortieren nach username:

usort($obigesarray, "cmp");

....

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

Ich bekomme den Fehler:

Warning: usort() [function.usort]: Invalid comparison function

Daraufhin versuchte ich:

function cmp($a, $b) {
   return strcmp($a->username, $b->username);
}

Jedoch mit demselben Fehler. Meine PHP-Kenntnisse liegen etwas zurück. Kann mir bitte jemand sagen, wie es richtig sein müsste?

Gruß
Ulli

  1. echo $begrüßung;

    Array
    (
        [0] => stdClass Object
            (
                [username] => root
                [passwd] => xxxxxxxx
                [email] => abc@abc.de
            )

    [1] => stdClass Object
            (
                [username] => root2
                [passwd] => xxxxxxxx
                [email] => abcdef@abcdef.de
            )

    .... usw.
    )

    function cmp($a, $b) {
       return strcmp($a->username, $b->username);
    }

    Jedoch mit demselben Fehler. Meine PHP-Kenntnisse liegen etwas zurück. Kann mir bitte jemand sagen, wie es richtig sein müsste?

    Das Array beinhaltet Objekte. (Mithin kann es schon mal kein mehrdimensionales Array sein.) Also musst du in der Vergleichsfunktion auch Eigenschaften eines Objekts ansprechen und keinen Array-Zugriff verwenden.

    Warning: usort() [function.usort]: Invalid comparison function

    Diesen Fehler bekomme ich nur, wenn es die Funktion nicht gibt. Ein function_exists('cmp') sollte dir auch ein false zurückliefern.
    Ich vermute, dass die Funktion nicht im globalen Namensraum deklariert ist. Hast du sie vielleicht als Methode einer Klasse deklariert? Vielleicht hilft dir die Definition des Pseudo-Typs callback weiter, den die Funktion usort haben möchte.

    ]echo "$verabschiedung $name";