php二位数组排序

介绍一个比较好用的二位数组的多个字段的排序的方法。

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

具体的效果就不说了,直接撸代码试试就知道了。
这个方法不是最近使用的,整理之前的代码的时候发现的,不知道太懒了,没有记录下来

你可能感兴趣的:(php二位数组排序)