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);
本文介绍了一种在PHP中按多个字段对数组进行排序的方法,通过自定义函数sortArrByManyField实现。该函数接收数组及排序字段作为参数,支持自定义排序顺序,如先按年龄降序排列,相同年龄再按状态升序排列。

5573

被折叠的 条评论
为什么被折叠?



