介绍一个比较好用的二位数组的多个字段的排序的方法。
public function sortByCols($list, $field)
{
$sort_arr=array();
$sort_rule='';
foreach($field as $sort_field=>$sort_way){
foreach($list as $key=>$val){
$sort_arr[$sort_field][$key]=$val[$sort_field];
}
$sort_rule .= '$sort_arr["' . $sort_field . '"],'.$sort_way.',';
}
if(empty($sort_arr)||empty($sort_rule)){ return $list; }
eval('array_multisort('.$sort_rule.' $list);');//array_multisort($sort_arr['parent'], 4, $sort_arr['value'], 3, $list);
return $list;
}
$hand = [['id' => 1, 'age' => 1, 'num' => 2], ['id' => 1, 'age' => 1, 'num' => 2], ['id' => 1, 'age' => 1, 'num' => 2]];
$hand = $this->sortByCols($hand, array('age' => SORT_ASC, 'num' => SORT_ASC, 'id' => SORT_DESC));
具体的效果就不说了,直接撸代码试试就知道了。
这个方法不是最近使用的,整理之前的代码的时候发现的,不知道太懒了,没有记录下来