Hallo dedlfix,
danke für Deine Antworten!
Einen Vergleich mit strcmp() hast du ja schon in deiner benutzerdefinierten Vergleichsfunktion verwendet. Du darfst nun nur nicht das Ergebnis sofort zurückgeben sondern musst im Falle von Gleichheit mit dem nächsten Vergleich weitermachen.
Ich hatte mir gedacht so sollte es gehen, tut es aber leider nicht:
$kunde[0] = array("vorname"=>"Hans", "nachname"=>"Michaelis","strasse"=>"Nussweg 12", "ort"=>"Hamburg");
$kunde[1] = array("vorname"=>"Manuela", "nachname"=>"Michaelis","strasse"=>"Bahnhofstr. 34","ort"=>"Berlin");
$kunde[2] = array("vorname"=>"Klaus", "nachname"=>"Michaelis","strasse"=>"Mühlweg 8", "ort"=>"Hamburg");
$kunde[3] = array("vorname"=>"Sabine", "nachname"=>"Jabst", "strasse"=>"Flurweg 8", "ort"=>"Dresden");
$kunde[4] = array("vorname"=>"Gerhard", "nachname"=>"Blum", "strasse"=>"Wiesenweg 77", "ort"=>"Berlin");
$kunde[5] = array("vorname"=>"Marion", "nachname"=>"Michaelis","strasse"=>"Ahornweg 12", "ort"=>"Hamburg");
Function sortiere_kunde(&$a)
{
Function cmp_array_strasse ($a, $b)
{
return(strcmp($a["strasse"], $b["strasse"]));
}
Function cmp_array_ort ($a, $b)
{
$x=0; $x=strcmp($a["ort"], $b["ort"]);
if ($x==0)
{
$sort_strasse=array();
$sort_strasse[0]=$a;
$sort_strasse[1]=$b;
usort($sort_strasse, "cmp_array_strasse");
}
else return $x;
}
Function cmp_array_nachname ($a, $b)
{
$x=0; $x=strcmp($a["nachname"], $b["nachname"]);
if ($x==0)
{
$sort_nachname=array();
$sort_nachname[0]=$a;
$sort_nachname[1]=$b;
usort($sort_nachname, "cmp_array_ort");
}
else return $x;
}
usort($a, "cmp_array_nachname");
}
sortiere_kunde($kunde);
echo "kunde: ";
echo "<pre>";
print_r( $kunde );
echo "</pre>";
Die Ausgabe sieht so aus:
(
[0] => Array
(
[vorname] => Gerhard
[nachname] => Blum
[strasse] => Wiesenweg 77
[ort] => Berlin
)
[1] => Array
(
[vorname] => Sabine
[nachname] => Jabst
[strasse] => Flurweg 8
[ort] => Dresden
)
[2] => Array
(
[vorname] => Marion
[nachname] => Michaelis
[strasse] => Ahornweg 12
[ort] => Hamburg
)
[3] => Array
(
[vorname] => Klaus
[nachname] => Michaelis
[strasse] => Mühlweg 8
[ort] => Hamburg
)
[4] => Array
(
[vorname] => Manuela
[nachname] => Michaelis
[strasse] => Bahnhofstr. 34
[ort] => Berlin
)
[5] => Array
(
[vorname] => Hans
[nachname] => Michaelis
[strasse] => Nussweg 12
[ort] => Hamburg
)
)
Stimmt nicht so ganz. Wo liegt da noch der Fehler? Danke.
Grüße
Was ist daran falsch?