我可以在php中使用usort根据值对数组进行排序吗
我想根据最终分数对数组进行排序,并保留我的键。我能用usort吗?怎么做我可以在php中使用usort根据值对数组进行排序吗,php,Php,我想根据最终分数对数组进行排序,并保留我的键。我能用usort吗?怎么做 Array ( [2253472] => Array ( [noOfDays] => 1 [bestAns] => 1 [finalScore] => 13.5 ) [2253465] => Array ( [noOfDays] => 1 [bestAns] => 0
Array
(
[2253472] => Array
(
[noOfDays] => 1
[bestAns] => 1
[finalScore] => 13.5
)
[2253465] => Array
(
[noOfDays] => 1
[bestAns] => 0
[finalScore] => 50
)
[2253473] => Array
(
[noOfDays] => 1
[bestAns] => 0
[finalScore] => 23
)
[2253471] => Array
(
[noOfDays] => 1
[bestAns] => 0
[finalScore] => 89
)
[2253464] => Array
(
[noOfDays] => 1
[bestAns] => 1
[finalScore] => 0.5
)
[2253415] => Array
(
[noOfDays] => 6
[bestAns] => 0
[finalScore] => 0.333
)
)
是的,如果不保留键,您可以这样做,您只需要一个用户定义的比较方法 使用
uasort()
保存密钥:
示例:
function cmp($a, $b)
{
if ($a == $b) {
return 0;
}
return ($a < $b) ? -1 : 1;
}
$a = array(3, 2, 5, 6, 1);
uasort($a, "cmp");
-1向下移动,0离开,1向上推
// Ascending
usort($data, function ($a, $b) {
return $a['finalScore'] - $b['finalScore'];
});
或
是的,您可以使用
usort
。。到目前为止,你能给我们看一下你的代码吗?这不能维护数组的键。新数组的索引按升序0、1、。。。如何保留密钥?数组([0]=>Array([noOfDays]=>1[bestAns]=>1[finalScore]=>13.5)[1]=>Array([noOfDays]=>1[bestAns]=>0[finalScore]=>50))使用uasort(),这是一个很好的排序差异和关键保留的表格:我的分数在小数点扩展到小数点后3-4位。usort对十进制值不起作用吗?哇,你接受的答案只是粘贴了一点代码,没有任何解释,所以你什么也学不到…啊。。为什么我要尝试。
// Ascending
usort($data, function ($a, $b) {
return $a['finalScore'] - $b['finalScore'];
});
// Descending
usort($data, function ($a, $b) {
return $b['finalScore'] - $a['finalScore'];
});