在PHP中也按键和值对数组排序

在PHP中也按键和值对数组排序,php,Php,如何按升序键和降序值对数组进行排序? 这是您要查找的代码 <?php $array = array(5=>100,4=>100,3=>100,1=>100,8=>97,6=>97,9=>82,7=>80); $keys = array_keys($array); $values = array_values($array); sort($keys); rsort($values); for($i=0;$i<=count($keys)

如何按升序键和降序值对数组进行排序?
这是您要查找的代码

<?php
$array = array(5=>100,4=>100,3=>100,1=>100,8=>97,6=>97,9=>82,7=>80);

$keys = array_keys($array);
$values = array_values($array);

sort($keys);
rsort($values);
for($i=0;$i<=count($keys)-1;$i++){
    $array[$keys[$i]] = $values[$i];
}
?>


此问题已在葡萄牙语堆栈中解决,在以下链接中:

是否尝试ksort?您的意思是:先按值降序排序,然后按键升序排序?是的。这正是我需要的。k排序忽略值为什么是9后的7和82后的80?它背后的逻辑是什么?你所做的事情的较短版本是
rsort($array)
。试试看@p01ymath,这样,它就丢失了密钥的原始值。非常确定在我第一次测试它工作时,您不需要
数组\u值。他没有失去钥匙的价值。现在,使用相同的值​​与上一次测试一样,它会失败。这是在我测试KSORT之后发生的。@JetroBernardo,这样也会丢失密钥的值。在评论之前我已经测试过了。因此,关键是减少
<?php
$array = array(5=>100,4=>100,3=>100,1=>100,8=>97,6=>97,9=>82,7=>80);

$keys = array_keys($array);
$values = array_values($array);

sort($keys);
rsort($values);
for($i=0;$i<=count($keys)-1;$i++){
    $array[$keys[$i]] = $values[$i];
}
?>