2 dimensionales Array sortieren mit php
-
hallo!
Ich habe ein 2 dim. array und möchte nach einem bestimmten index sortieren.
Beispiel:
product[i][0] = name
product[i][1] = alter
product[i][2] = adresseJetzt möchte ich das gesamte Array vom alter absteigend sortieren - sprich der älteste ist ganz oben usw....
krieg das irgendwie nicht hin..
weiß jemand wie das geht?
danke schomanl!!
lg
-
-
Genau für dieses Problem habe ich vor einiger Zeit mal eine Funktion geschrieben, bin damals ganz schön lang davorgehockt, paar Stunden habe ich für die Lösung schon gebraucht.
<?php function sort_2d_array($array, $sortby, $desc) { $sort = array(); $return = array(); foreach($array as $key => $value) { $sort[] = $value[$sortby]; } if($desc) { arsort($sort); } else { asort($sort); } foreach($sort as $key => $value) { $return[] = $array[$key]; } return $return; } ?>
Erklärung:
array sortiert = sort_2d_array(array unsortiert, string schlüssel, bool desc)
schlüssel = der Array-Schlüssel in der zweiten Dimension, nach dessen Wert das Array in der ersten Dimension sortiert wird. (Muss in allen Arrays der zweiten Dimension vorhanden sein).
desc gibt an, wie sortiert wird (auf- oder absteigend). 0 = aufsteigend, 1 = absteigend.
-
$deinarray = array( array("foo", 23, 'foobar'), array("lol", 12, "baz"), array("baz", 18, 'quux') ); usort($deinarray, create_function('$a,$b', 'return $a[1]-$b[1];')); $deinarray = array_reverse($deinarray); var_export($deinarray);
so grob...
das array_multisort ist ganz nett, will aber spaltenweise und nicht zeilenweise haben.
-
Ah, danke euch schonmal, werd das gleich ausprobieren!!
lg
l00P