public static function sortArrByManyField(){
$args = func_get_args(); // 获取函数的参数的数组
if(empty($args)){
return null;
}
$arr = array_shift($args);
if(!is_array($arr)){
return $arr;
}
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 = [
[
‘age’ => 1,
‘status’ => 1
],
[
‘age’ => 2,
‘status’ => 0
],
[
‘age’ => 2,
‘status’ => 1
],
];
先按照 age 从大到小排序,age一样 再按照 status 从小到大排
sortArrByManyField($arr, ‘age’, SORT_DESC, ‘status’, SORT_ASC);