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
)
)