Php 按两个变量对多维数组排序

Php 按两个变量对多维数组排序,php,arrays,sorting,multidimensional-array,Php,Arrays,Sorting,Multidimensional Array,我有一个如下所示的数组,但它可能包含更多草稿 $multi_arr = array( 'draft1' => array ( 'alloc_coeff' => 560, 'steps_count' => 2, 'order_draft' => array( '0' => array( 'whse_id' => 4, '

我有一个如下所示的数组,但它可能包含更多草稿

$multi_arr = array(
    'draft1' => array (
        'alloc_coeff' => 560,
        'steps_count' => 2,
        'order_draft' => array(
            '0' => array(
                'whse_id' => 4,
                'quantity' => 0,
                'percent' => 0
            ),
            '1' => array(
                'whse_id' => 1,
                'quantity' => 10,
                'percent' => 66.666666666667
            )           
        )
    ),
    'draft2' => array (
        'alloc_coeff' => 1517,
        'steps_count' => 1,
        'order_draft' => array(
            '0' => array(
                'whse_id' => 1,
                'quantity' => 10,
                'percent' => 66.666666666667
            )      
        )
    ),
    'draft3' => array (
        'alloc_coeff' => 559,
        'steps_count' => 2,
        'order_draft' => array(
            '0' => array(
                'whse_id' => 2,
                'quantity' => 0,
                'percent' => 0
            ),
            '1' => array(
                'whse_id' => 1,
                'quantity' => 10,
                'percent' => 66.666666666667
            )           
        )
    )
);
我需要使用两个变量对内容进行排序:
alloc\u coeff
steps\u count

首先,需要从最高值到最低值考虑分配系数

然后作为第二个变量,
将计数从最低值逐步增加到最高值

usort($multi_arr, function($a, $b) {
    return $a['alloc_coeff'] <=> $b['alloc_coeff'];
});
usort($multi_arr,function($a,$b){
返回$a['alloc_coeff']$b['alloc_coeff'];
});
我不需要重写整个数组并将其存储在临时变量中,我只需要按如下方式排序键(预期结果)
draft2
draft1
,最后是
draft3


实现这一点的方法是什么?

您可以按以下方式进行:-

array_multisort(array_column($multi_arr, 'alloc_coeff'), SORT_DESC,
                array_column($multi_arr, 'steps_count'), SORT_ASC,
                $multi_arr);
输出:-和


注意:-在5.6.23和PHP7.0.8中进行了测试!这太简单了!谢谢。@Borsn很高兴帮助你:):)