Hallo,
Nutze usort()!
Und zum Vergleichen:
function gewicht_preis_compare($a, $b) {
if ($a['Gewicht'] == $b['Gewicht']) {
if ($a['Preis'] == $b['Preis']) {
return 0;
}
return ($a['Preis'] < $b['Preis']? -1 : 1);
}
return ($a['Gewicht'] < $b['Gewicht']? -1 : 1);
}
Und das kann man bei gleicher Funktionalität noch etwas kürzer und übersichtlicher schreiben:
~~~php
function gewicht_preis_compare($a, $b)
{ return ($a['Gewicht']==$b['Gewicht'] ? $b['Preis']-$a['Preis'] : $b['Gewicht']-$a['Gewicht']);
}
Wenn das Gewicht gleich ist, gib die Preisdifferenz als Kriterium zurück; andernfalls die Gewichtsdifferenz.
Die Vergleichsfunktion für usort() muss nur 0 für Gleichheit, ansonsten einen Wert <0 bzw. >0 liefern. Der Betrag ist egal. Deshalb ist ein expliziter Vergleich mit nachfolgender Entscheidung für +1 oder -1 nicht nötig, man kann direkt die Differenz zurückgeben und ausnutzen, dass ein Vergleich arithmetisch gesehen nichts anderes als eine Differenzbetrachtung ist.
Ciao,
Martin
Du kannst dem Leben nicht mehr Tage geben.
Aber dem Tag mehr Leben.
Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(