[php]运用变量引用实现一维数组转多维树状数组


/**
 * 运用 变量引用 实现 一维数组 转 多维树状数组
 * @param $array
 * @param array $options = ['id'=>'id', 'pid'=>'pid', 'sub'=>'_sub', 'root'=>0]
 * @return array
 */
public static function array2Tree($array, $options = []) {

    /** merge Options */
    $opt = array_merge(['id'=>'id', 'pid'=>'pid', 'sub'=>'_sub', 'root'=>0], $options);

    $tree = [];

    if(is_array($array)){

        $refer = [];

        foreach ($array as $k => $v) {
            $refer[$v[$opt['id']]] =& $array[$k];
        }

        foreach ($array as $k => $v) {

            $parentId = $v[$opt['pid']];

            if ($opt['root'] == $parentId) {

                $tree[$v[$opt['id']]] =& $array[$k];

            }else{

                if (isset($refer[$parentId])) {
                    $parent =& $refer[$parentId];
                    $parent[$opt['sub']][$v[$opt['id']]] =& $array[$k];
                    unset($array[$k]);
                }
            }
        }
        unset($refer, $array);
    }
    return $tree;
}

上一篇:MFC创建单文档工程(为窗口添加背景图)


下一篇:JAVA之旅(五)——this,static,关键字,main函数,封装工具类,生成javadoc说明书,静态代码块