PHP数组递归排序

来源:互联网 发布:大话西游手游藕丝数据 编辑:程序博客网 时间:2024/06/07 06:27
/** * 递归根据特定key对数组排序 * @param $data * @param string $orderKey * @param string $sonKey * @param int $orderBy * @return mixed */function recursion_orderby($data, $orderKey = 'order', $sonKey = 'children', $orderBy = SORT_ASC){    $func = function ($value) use ($sonKey, $orderKey, $orderBy) {        if (isset($value[$sonKey]) && is_array($value[$sonKey])) {            $value[$sonKey] = recursion_orderby($value[$sonKey], $orderKey, $sonKey, $orderBy);        }        return $value;    };    return array_orderby(array_map($func, $data), $orderKey, $orderBy);}$a = [    [        'order' => 0,    ],    [        'order' => -1,        'children' => [            [                'order' => 0,            ],            [                'order' => -2,                'children' => [                    ['order' => 0],                    ['order' => -1],                    ['order' => 1],                ],            ],        ],    ],    [        'order' => 2,    ],];var_dump(recursion_orderby($a));/** * 输出:array(3) {  [0] =>  array(2) {    'order' =>    int(-1)    'children' =>    array(2) {      [0] =>      array(2) {        'order' =>        int(-2)        'children' =>        array(3) {          [0] =>          array(1) {            'order' =>            int(-1)          }          [1] =>          array(1) {            'order' =>            int(0)          }          [2] =>          array(1) {            'order' =>            int(1)          }        }      }      [1] =>      array(1) {        'order' =>        int(0)      }    }  }  [1] =>  array(1) {    'order' =>    int(0)  }  [2] =>  array(1) {    'order' =>    int(2)  }} */

array_orderby方法地址http://blog.csdn.net/alexander_phper/article/details/55215825