Mehrdimensionales Array, Objekt, Sort
ullibolle2
- php
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
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";