PDA

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.

c4
22.02.2005, 09:26:59
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
22.02.2005, 09:37:42
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....

c4
22.02.2005, 09:55:45
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...

c4
22.02.2005, 10:17:01
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.

c4
22.02.2005, 10:31:07
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

c4
22.02.2005, 10:48:27
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...

c4
22.02.2005, 11:44:19
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.

c4
22.02.2005, 11:51:30
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?

c4
22.02.2005, 11:56:30
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 :-)