php 二维数组排序

it2025-02-10  10

单字段排序:

/** * 二维数组根据字段进行排序 * @params array $array 需要排序的数组 * @params string $field 排序的字段 * @params string $sort 排序顺序标志 SORT_DESC 降序;SORT_ASC 升序 */function arraySequence($array, $field, $sort = 'SORT_DESC'){ $arrSort = array(); foreach ($array as $uniqid => $row) { foreach ($row as $key => $value) { $arrSort[$key][$uniqid] = $value; } } array_multisort($arrSort[$field], constant($sort), $array); return $array;}多字段排序 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);} $person = array( array('num'=>'101','id'=>6,'name'=>'zhangsan','age'=>6), array('num'=>'201','id'=>7,'name'=>'ahangsan','age'=>4), array('num'=>'103','id'=>1,'name'=>'bhangsan','age'=>9), array('num'=>'401','id'=>3,'name'=>'dhangsan','age'=>2),); $a = $this->sortArrByManyField($person, 'age', SORT_DESC, 'num', SORT_DESC);

转载于:https://www.cnblogs.com/aifengguo/p/8335461.html

相关资源:数据结构—成绩单生成器
最新回复(0)