Archiv verlassen und diese Seite im Standarddesign anzeigen : Mehrdimensionales Array sortieren
Heppi
22.02.2005, 08:56:56
Hallo zusammen,
ich habe das folgende Array.
$saarland = array(
array(1, "MZG", "Merzig-Wadern"),
array(2, "WND", "St. Wendel"),
array(3, "SLS", "Saarlouis"),
array(4, "NK", "Neunkirchen"),
array(5, "SB/VK", "Saarbrücken"),
array(6, "HOM/IGB", "Saar-Pfalz-Kreis"));
Ich würde das Array $saarland gerne nach den KFZ-Kennzeichen sortieren, so daß die Zuordnung zur Stadt und der durchlaufenden Nummerierung vorhanden bleibt. Soll dann folgendermaßen aussehen.
$saarland = array(
array(6, "HOM/IGB", "Saar-Pfalz-Kreis"),
array(1, "MZG", "Merzig-Wadern"),
array(4, "NK", "Neunkirchen"),
array(5, "SB/VK", "Saarbrücken"),
array(3, "SLS", "Saarlouis"),
array(2, "WND", "St. Wendel"));
Wäre dankbar, wenn mir da jemand helfen könnte.
Grüße, Heppi.
Die Antwort solltest Du im Forum finden:
--> http://selfphp.info/forum/search.php?searchid=6039
|Coding
22.02.2005, 09:35:38
c4, zielst du auf einen bestimmten thread?
c4, zielst du auf einen bestimmten thread? Nein, wieso?
|Coding
22.02.2005, 09:50:54
weil ich persönlich jetzt nicht wirklich nen thread gesehen habe wo ein multi array sortiert wurde....
Wir hatten das Problem schon so oft, da wird sich doch wohl eine Lösung finden lassen. Oder nicht?
|Coding
22.02.2005, 10:07:14
möglich, ich habe jetzt aber keine gefunden, die ihm jetzt helfen kann...
habe jetzt allerding auch nicht wirklich richtig gesucht.
deleted
da fiel mir doch gerade array_multisort() ein...
Ich verstehe nicht, was die if()-Abfragen sollen. Gleich danach wird der return-Wert doch eh auf -1 oder 1 abgeändert?!
|Coding
22.02.2005, 10:25:40
richtig, aber nur wenn > oder < wird -1 bzw. 1 returned. was machst du denn wenn "gleich"? dann musst du doch wohl 0 zurückgeben.
Da hast Du aber was vertauschwechselt. $x ? $y : $z gibt IMMER einen Wert zurück. Ist ja nix anderes als if ($x) { $y } else { $z }
Siehe auch da:
--> http://php.net/manual/en/language.expressions.php#AEN3870
|Coding
22.02.2005, 10:44:34
das ist mir sehr wohl bekannt, aber:
abfrage: $a < $b ? -1 : 1;
wenn $a = 1 und $b = 2 ist der rückgabewert -1
wenn $a = 2 und $b = 1 ist der rückgabewert 1
wenn $a = 1 und $b = 1 ist der rückgabewert 1
so wie willst du jetzt sortieren?
man braucht doch ne klaren wert für jeden fall der eintreten kann.
der wert entscheidet doch über die pos im array.
-1 = minus eine pos
1 = plus eine pos
0 = pos beibehalten
Dann hast Du halt ein else vergessen. Ein Beispiel: <?php
$a=0;
if ($a==0) {
$b='Null';
}
$b = $a<0 ? 'Kleiner' : 'Groesser';
echo $b;
?> Fällt Dir was auf?
xabbuh
22.02.2005, 10:54:35
Schade, dass der Code, um den ihr euch streitet, nicht mehr sichtbar ist.
Der einfachste Weg dürfte aber sicherlich, wie oben schon gesagt, array_multisort() sein.
|Coding
22.02.2005, 11:05:02
function brauche_kein_else($a, $b){
if($a == $b) return 0;
return $a > $b ? -1 : 1;
}
wo brauche ich da ein else?!
return wird nicht überschrieben, bzw. wenn ein wert returned wird, dann ist die funktion 'beendet'.
das:
function brauche_kein_else($a, $b){
if($a == $b) return 0;
return $a > $b ? -1 : 1;
}
liefert immer das gleiche wie:
function brauche_kein_else($a, $b){
return $a == $b ? 0 : ($a > $b ? -1 : 1);
}
|Coding
22.02.2005, 11:08:07
hi xabbuh. siehe funktion "brauche_kein_else", das ist im moment thema...
Mensch, die ganze Zeit übersehen: // A:
function brauche_kein_else($a, $b){
if($a == $b) return 0;
return $a > $b ? -1 : 1;
}
// B:
function brauche_kein_else($a, $b){
if($a == $b) {
return 0;
}
else {
return $a > $b ? -1 : 1;
}
}
// Ergo: A==B Geschweifte Klammern gibt's nicht ohne Grund...
|Coding
22.02.2005, 11:49:52
wenn die funktionell nicht nötig sind lasse ich die immer weg.
wenn die funktionell nicht nötig sind lasse ich die immer weg. Nicht gut, das.
|Coding
22.02.2005, 11:52:56
gibt's da nen bestimmten grund für?
Habe ich doch eindrucksvoll bewiesen, oder? Es ist einfach um ein vielfaches besser lesbar.
Kannst ja mal eine Umfrage starten... ;)
xabbuh
22.02.2005, 11:57:57
Trotz allem finde ich die Lösung zu umständlich :-)
|Coding
22.02.2005, 12:01:32
Habe ich doch eindrucksvoll bewiesen, oder? Es ist einfach um ein vielfaches besser lesbar.
Kannst ja mal eine Umfrage starten... ;)
du willst mich erziehen, wa? :-)
lesbar/unlesbar <-- ist ansichtssache
@xabbuh
eiweiß. array_multisort ist mir auch erst eingefallen als ich auf "antworten" geklickt habe :-)
vBulletin® v3.8.3, Copyright ©2000-2024, Jelsoft Enterprises Ltd.