我可以在php中使用usort根据值对数组进行排序吗

我可以在php中使用usort根据值对数组进行排序吗,php,Php,我想根据最终分数对数组进行排序,并保留我的键。我能用usort吗?怎么做 Array ( [2253472] => Array ( [noOfDays] => 1 [bestAns] => 1 [finalScore] => 13.5 ) [2253465] => Array ( [noOfDays] => 1 [bestAns] => 0

我想根据最终分数对数组进行排序,并保留我的键。我能用usort吗?怎么做

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'];
});