2-spaltiges Array nach der 2. Spalte sortieren

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