tags:

views:

235

answers:

4

how can i get this order

array(
4 => 'four',
3 => 'three',
2 => 'two',
1 => 'one',
)

from this

array(
1 => 'one',
2 => 'two',
3 => 'three',
4 => 'four',
)
+3  A: 

You have an array, you want to sort it by keys, in reverse order -- you can use the krsort function :

Sorts an array by key in reverse order, maintaining key to data correlations. This is useful mainly for associative arrays.


In you case, you'd have this kind of code :

$arr = array(
    1 => 'one',
    2 => 'two',
    3 => 'three',
    4 => 'four',
);

krsort($arr);
var_dump($arr);

which would get you this kind of output :

$ /usr/local/php-5.3/bin/php temp.php
array(4) {
  [4]=>
  string(4) "four"
  [3]=>
  string(5) "three"
  [2]=>
  string(3) "two"
  [1]=>
  string(3) "one"
}


As a sidenode : if you had wanted to sort by values, you could have used arsort -- but it doesn't seem to be what you want, here.

Pascal MARTIN
A: 

Try krsort() - that will sort in reverse using the array key, whereas rsort will sort on the array value.

Paul Dixon
+2  A: 

If you just want to reverse the order, use array_reverse:

$reverse = array_reverse($array, true);

The second parameter is for preserving the keys.

Gumbo
A: 

If you want to sort the keys in DESC order use:

krsort($arr);

If you want to sort the values in DESC order and maintain index association use:

arsort($arr);

If you want to sort the values in DESC natural order and maintain index association use:

natcasesort($arr);
$arr = array_reverse($arr, true);
Alix Axel