如何按键值的降序对键进行排序,如果两个键的数量相同,则必须按字母顺序打印。我知道可能必须创建一个用户功能,但是我无法学习如何制作这些功能。
数组:
array(3) {
["motes"]=>
int(3)
["shards"]=>
int(5)
["fragments"]=>
int(5)
}
输出:
fragments: 5
shards: 5
motes: 3
答案 0 :(得分:1)
您可以将用户定义的函数与uksort
配合使用以实现所需的功能。通过将数组也传递给函数,我们可以在对键进行排序之前对值进行作弊和排序:
$array = array('motes' => 3, 'shards' => 5, 'fragments' => 5);
uksort($array, function ($a, $b) use ($array) {
if ($array[$a] < $array[$b]) return 1;
elseif ($array[$a] > $array[$b]) return -1;
else return strcmp($a, $b); });
print_r($array);
输出
Array (
[fragments] => 5
[shards] => 5
[motes] => 3
)