PHP多维数组指定多字段排序及优先级

1,单个字段排序 

public function  arraySort($data,$key,$sort="desc"){

    $last_names = array_column($data,$key);
    if($sort=="desc")
        array_multisort($last_names,SORT_DESC,$data);
    else
        array_multisort($last_names,SORT_ASC,$data);
    return $data;
}

2 二维数组多个字段排序,设置优先级

function sortArrByManyField(){
    $args = func_get_args();
    if(empty($args)){
        return null;
    }
    $arr = array_shift($args);
    if(!is_array($arr)){
        throw new Exception("第一个参数不为数组");
    }
    foreach($args as $key => $field){
        if(is_string($field)){
            $temp = array();
            foreach($arr as $index=> $val){
                $temp[$index] = $val[$field];
            }
            $args[$key] = $temp;
        }
    }
    $args[] = &$arr;//引用值
    call_user_func_array("array_multisort",$args);
    return array_pop($args);
}


$arr = [

    0=>[
        "id"=>1,
        "d"=>"2019-12-06 11:15-11:45",
        "r"=>11
    ],
    2=>[
        "id"=>1,
        "d"=>"2020-01-03 09:00-09:30",
        "r"=>13
    ],

    3=>[
        "id"=>1,
        "d"=>"2020-01-03 09:00-09:30",
        "r"=>14
    ],
];

$arr = sortArrByManyField($arr,"d",SORT_ASC,"r",SORT_DESC);
print_r($arr);

Array
(
    [0] => Array
    (
        [id] => 1
            [d] => 2019-12-06 11:15-11:45
            [r] => 11
        )

    [1] => Array
(
    [id] => 1
            [d] => 2020-01-03 09:00-09:30
            [r] => 14
        )

    [2] => Array
(
    [id] => 1
            [d] => 2020-01-03 09:00-09:30
            [r] => 13
        )

)