Hallo zusammen,
wie kann man ein zweispaltiges Array (geht von $aa[0][0] bis $aa[300][1]) nach der zweiten Spalte (absteigend) sortieren?
Gruß JoKu
Hallo zusammen,
wie kann man ein zweispaltiges Array (geht von $aa[0][0] bis $aa[300][1]) nach der zweiten Spalte (absteigend) sortieren?
Gruß JoKu
Hallo
Also du willst dann $aa[300][1],$aa[299][1],$aa[298][1],…,$aa[0][1],$aa[300][0],…,$aa[0][0] ?
Ein Array lässt sich nur nach der ersten Dimension sortieren, die zweite Dimension kann man nur als zusätzliches Kriterium verwenden.
Am einfachsten ist es, die Dimensionen zu tauschen:
foreach ($aa as $dim1 =\> $tmp){
foreach ($tmp as $dim2 =\> $val){
$bb[$dim2][$dim1]=$val
}}
Danach kannst du einfach mit ksort() nach der ersten Dimension sortieren.
Wenn alle Indizes von 0 bis 300 vergeben sind und jedes Element von $aa ein zweielementiges Array ist, dann geht auch folgendes:
for ($i=1;$i\>=0;$i--){
for ($j=300;$i\>=0;$i--){
echo $aa[$j][$i]; //oder was auch immer man mit dem Array vorhat
}}
Gruß, sigterm
Hallo,
wie kann man ein zweispaltiges Array (geht von $aa[0][0] bis
$aa[300][1]) nach der zweiten Spalte (absteigend) sortieren?
mit usort und einer Vergleichsfunktion:
...
function compare($a, $b) {return $a===$b ? 0 : ($a[1]\>$b[1]?-1:1);}
...
...
usort($aa, 'compare');
...
Grüße
CMБ
mit usort und einer Vergleichsfunktion:
function compare($a, $b) {return $a===$b ? 0 :
($a[1]>$b[1]?-1:1);}
Super! Danke!
Zusatzfrage:
Wie kann ich es erreichen, dass bei gleichen Werten in Saplte[1] die Einträge in Saplte[0] aufsteigend sortiert sind?
Grüße JK
P.s.:
Ich war bisher (weniger elegant) auf
foreach( $array as $zz ){ $array2[]=array_reverse($zz); }
rsort($array2);
unset($array);
foreach( $array2 as $zz ){ $array[]=array_reverse($zz); }
gekommen.
Zusatzfrage:
Wie kann ich es erreichen, dass bei gleichen Werten in
Spalte[1] die Einträge in Saplte[0] aufsteigend sortiert sind?
Ich hab’s:
function compare($a, $b){
//return $a===$b ? 0 : ($a[1]>$b[1]?-1:1);
if( $a===$b ){ return 0; }
if( $a[1]==$b[1] ){ return ($a[0]$b[1]?-1:1);
}
Grüße JK