сортировать массив по значению, а затем по ключу

Предположим, у меня есть такой массив:

    $array => Array
(
[5] => 0.33
[3] => 1
[2] => 0.33
)

Когда я делаю asort($array) Я получил:

    $array => Array
(
[5] => 0.33
[2] => 0.33
[3] => 1
)

Как я могу отсортировать это так, чтобы сначала значения были отсортированы, и если они имеют одинаковое значение, то ключи отсортированы, так что мой окончательный результат будет:

   $array => Array
(
[2] => 0.33
[5] => 0.33
[3] => 1
)

2

Решение

Вы могли бы попробовать array_multisort с небольшим трюком

$array = array(
0 => 1,
3 => 1,
7 => 1,
2 => 0.33,
5 => 0.33,
6 => 0.33,
1 => 0.33,
);
$array_keys = array_keys($array);
array_multisort($array, $array_keys);
$result = array_combine($array_keys, $array);
var_dump($result);
3

Другие решения

Пытаться uasort :

<?php
// Comparison function
function cmp($a, $b) {
if ($a == $b) {
return 0;
}
return ($a < $b) ? -1 : 1;
}

// Array to be sorted
$array = array('a' => 4, 'b' => 8, 'c' => -1, 'd' => -9, 'e' => 2, 'f' => 5, 'g' => 3, 'h' => -4);
print_r($array);

// Sort and print the resulting array
uasort($array, 'cmp');
print_r($array);
?>

Выход:

Array
(
[d] => -9
[h] => -4
[c] => -1
[e] => 2
[g] => 3
[a] => 4
[f] => 5
[b] => 8
)
0

По вопросам рекламы [email protected]