在php中使用相同的数组键对多维数组排序

在php中使用相同的数组键对多维数组排序,php,sorting,multidimensional-array,Php,Sorting,Multidimensional Array,下面是我的多维数组: 我已经根据“等级”对数组进行了排序,并得到了结果。 此排序数组再次需要基于“grade”键按“timetake”排序 ex:have grade=1.75,应按时间键排序。等级=2.50应该更高,因为它高于1.75 $testing_data = array( 0 => array( "fullname" => ' Shoping0000000000', "g

下面是我的多维数组: 我已经根据“等级”对数组进行了排序,并得到了结果。 此排序数组再次需要基于“grade”键按“timetake”排序

ex:have grade=1.75,应按时间键排序。等级=2.50应该更高,因为它高于1.75

        $testing_data = array(
            0 => array(
                "fullname" => ' Shoping0000000000',
                "grade" => 2.5000,
                "timetaken" => 15
            ),
            1 => array(
                "fullname" => ' Vennapureddy',
                "grade" => 1.75000,
                "timetaken" => 13
            ),
            2 => array(
                "fullname" => ' Shoping1111111',
                "grade" => 1.75000,
                "timetaken" => 11
            ),
            3 => array(
                "fullname" => ' Shoping2222222',
                "grade" => 1.75000,
                "timetaken" => 90
            ),
            4 => array(
                "fullname" => ' Shoping333333333',
                "grade" => 1.7000,
                "timetaken" => 15
            ),

            5 => array(
                "fullname" => ' Azmeera',
                "grade" => 1.7000,
                "timetaken" => 67
            ),
            6 => array(
                "fullname" => 'Admin User',
                "grade" => 1.00,
                "timetaken" => 180
            ),
            7 => array(
                "fullname" => ' Shoping444444444444',
                "grade" => 1,
                "timetaken" => 15
            ),
            8 => array(
                "fullname" => ' Shoping55555555555555555',
                "grade" => 0.5000,
                "timetaken" => 290
            ),
            9 => array(
                "fullname" => ' Shoping6666',
                "grade" => 0.5000,
                "timetaken" => 120
            ),
            10 => array(
                "fullname" => ' Shoping77777',
                "grade" => 0.5000,
                "timetaken" => 187
            ),
            11 => array(
                "fullname" => ' Shoping888888',
                "grade" => 0.5000,
                "timetaken" => 20
            ),                                                                                                         
        );
我的结果数组应该如下所示:

        $testing_data = array(
            0 => array(
                "fullname" => ' Shoping0000000000',
                "grade" => 2.5000,
                "timetaken" => 15
            ),
            1 => array(
                "fullname" => ' Shoping1111111',
                "grade" => 1.75000,
                "timetaken" => 11
            ),
            2 => array(
                "fullname" => ' Vennapureddy',
                "grade" => 1.75000,
                "timetaken" => 13
            ),

            3 => array(
                "fullname" => ' Shoping2222222',
                "grade" => 1.75000,
                "timetaken" => 90
            ),
            4 => array(
                "fullname" => ' Shoping333333333',
                "grade" => 1.7000,
                "timetaken" => 15
            ),

            5 => array(
                "fullname" => ' Azmeera',
                "grade" => 1.7000,
                "timetaken" => 67
            ),
            6 => array(
                "fullname" => ' Shoping444444444444',
                "grade" => 1,
                "timetaken" => 15
            ),
            7 => array(
                "fullname" => 'Admin User',
                "grade" => 1.00,
                "timetaken" => 180
            ),
            8 => array(
                "fullname" => ' Shoping888888',
                "grade" => 0.5000,
                "timetaken" => 20
            ),              
            9 => array(
                "fullname" => ' Shoping6666',
                "grade" => 0.5000,
                "timetaken" => 120
            ),
            10 => array(
                "fullname" => ' Shoping77777',
                "grade" => 0.5000,
                "timetaken" => 187
            ),              
            11 => array(
                "fullname" => ' Shoping55555555555555555',
                "grade" => 0.5000,
                "timetaken" => 290
            ),

        );


请参阅示例#2中的文档。

您需要使用usort,这是一个通过用户定义的函数对数组进行排序的函数。比如:

function cmp($a, $b)
{
    if ($a["grade"] == $b["grade"]) {
        return 0;
    }
    return ($a["grade"] < $b["grade"]) ? -1 : 1;
}

usort($yourArray,"cmp")
函数cmp($a,$b)
{
如果($a[“等级”]==b[“等级”]){
返回0;
}
回报($a[“等级”]<$b[“等级”])?-1:1;
}
usort($yourArray,“cmp”)
试试这个

array_multisort(array_column($testing_data, 'grade'), SORT_DESC, SORT_NUMERIC, $testing_data);

我看不出这两个阵列之间有什么区别。不清楚你想做什么。从数据中可以看出,您希望先按等级降序排序,然后按时间升序排序。是吗?你试过许多函数中的任何一个吗?重复帖子上的答案显示了一种按多个标准对数组排序的简单方法。usort比较表达式应该是
$b['grade']$a['grade']?:$a['timetake']$b['timetake']
array_multisort(array_column($testing_data, 'grade'), SORT_DESC, SORT_NUMERIC, $testing_data);