Попробуйте использовать asort()
вместо arsort()
. arsort()
отсортирует массив в обратном порядке. Примерно так должно «работать»:
$test = array(
'a' => 0,
'b' => 1,
'c' => 2
);
ksort($test);
asort($test);
Марио прав, что это не сработает, если несколько элементов содержат одно и то же значение. В качестве альтернативы вы можете использовать uksort (), который позволяет вам точно определить, как сортируется массив. Например, вы можете отсортировать два элемента, используя их значения по умолчанию. Но если значения одинаковы по их ключам.
$test = array(
'a' => 2,
'd' => 1,
'c' => 1,
'b' => 3
);
function cmp($a, $b){
global $test;
$val_a = $test[$a];
$val_b = $test[$b];
if($val_a == $val_b){
return ($a < $b) ? -1 : 1;
}
return ($val_a < $val_b) ? -1 : 1;
}
uksort($test, 'cmp');