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

 

 

 

 

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...