使用 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);
?>
陷阱:由于密钥在原始数组中排序,因此请不要试图建议按密钥排序以恢复到原始顺序。我用它们的顺序制作了示例,以便更容易直观地检查它们在输出中的顺序。