通过添加几个字段,对php中的多维数组进行排序


Sort a multidimensional array in php by addition of several fields

我有一个数组,如下所示:

[0] => Array
(
    [ID] => 1
    [total_1] => 200
    [total_2] => 10
    [total_3] => 420
    [name] => testname1
)
[1] => Array
(
    [ID] => 2
    [total_1] => 900
    [total_2] => 30
    [total_3] => 40
    [name] => testname1
)
[2] => Array
(
    [ID] => 3
    [total_1] => 900
    [total_2] => 40
    [total_3] => 90
    [name] => testname1
)

我需要用total_1、total_2和total_3的和来排序。因此,在这个例子中,如果我只按正确的降序输出ID密钥,它将是:

3,2,1

有人能告诉我如何用PHP做这件事吗?

您可以使用usort函数来比较值的总和:

function cmp($arr1, $arr2){
    $sum1 = $arr1['total_1'] + $arr1['total_2'] + $arr1['total_3']; 
    $sum2 = $arr2['total_1'] + $arr2['total_2'] + $arr2['total_3'];
    if ($sum1 == $sum2) {
       return 0;
    }
    return ($sum1 < $sum2) ? -1 : 1;
}
usort($array, "cmp");