这个问题其实是受到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);
?>
陷阱:由于键在原始数组中是有序的,请不要尝试建议通过键排序来恢复到原始顺序。我将它们排序后进行示例,以便更容易地在输出中检查它们的顺序。