Сохранять порядок ключей (стабильная сортировка) при сортировке с помощью PHP uasort

Этот вопрос фактически вдохновлен другим вопросом здесь, на SO, и я хотел его немного расширить.

Имея ассоциативный массив в PHP, можно ли отсортировать его значения, но где значения равны, чтобы сохранить исходный порядок ключей, используя одну (или несколько) встроенных функций сортировки PHP?

Вот сценарий Раньше я тестировал возможные решения (не нашел):

<?php
header('Content-type: text/plain');
for($i=0;$i<10;$i++){
    $arr['key-'.$i] = rand(1,5)*10;
}
uasort($arr, function($a, $b){
    // sort condition may go here //
    // Tried: return ($a == $b)?1:($a - $b); //
    // Tried: return $a >= $b; //
});
print_r($arr);
?>

Ловушка : поскольку ключи упорядочены в исходном массиве, пожалуйста, не поддавайтесь соблазну предлагать какую-либо сортировку по ключу для восстановления исходного порядка . Я сделал пример с ними, чтобы упростить визуальную проверку их порядка на выходе.

23
задан vaxquis 21 March 2018 в 15:08
поделиться