微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PHP 数组按多个字段排序

 

$array1 = array(

      0=>array('id'=>8,'name'=>'Apple','age'=> 18),       1=>array('id'=>8,'name'=>'bed','age'=>17),       2=>array('id'=>5,'name'=>'Cos','age'=>16),       3=>array('id'=>5,'name'=>'Cos','age'=>14) ); 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 = sortArrByManyField($array1,'id',SORT_ASC,'name',SORT_ASC,'age',SORT_DESC); print_r($arr);

 

结果如下:

array(4) {      [0]=>array(3) {            ["id"]=>int(5)            ["name"]=>string(3) "Cos"            ["age"]=>int(16)          }      [1]=>array(3) {            ["id"]=>int(5)            ["name"]=>string(3) "Cos"            ["age"]=>int(14)          }      [2]=>array(3) {            ["id"]=>int(8)            ["name"]=>string(5) "Apple"            ["age"]=>int(18)          }      [3]=>array(3) {            ["id"]=>int(8)            ["name"]=>string(3) "bed"            ["age"]=>int(17)      }    }

 

 

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐