之前我找弟弟拿了一个,现在又发现一个挺好用的数组转树形 现在贴出代码来给大家看看!

/**
 * 数据列表转换成树
 *
 * @param array $dataArr 数据列表
 * @param integer $rootId 根节点ID
 * @param string $pkName 主键
 * @param string $pIdName 父节点名称
 * @param string $childName 子节点名称
 *
 * @return array  转换后的树
 */
function ListToTree($dataArr, $rootId = 0, $pkName = 'cc_id', $pIdName = 'parent_id', $childName = 'children')
{
    $tree = [];
    if (is_array($dataArr)) {
        //1.0 创建基于主键的数组引用
        $referList = [];
        foreach ($dataArr as $key => & $sorData) {
            $referList[$sorData[$pkName]] =& $dataArr[$key];
        }

        //2.0 list 转换为 tree
        foreach ($dataArr as $key => $data) {
            $pId = $data[$pIdName];
            if ($rootId == $pId) //一级
            {
                $tree[] =& $dataArr[$key];
            } else //多级
            {
                if (isset($referList[$pId])) {
                    $pNode =& $referList[$pId];
                    $pNode[$childName][] =& $dataArr[$key];
                }
            }
        }
    }
    return $tree;
}
Last modification:March 24th, 2020 at 06:50 pm
如果觉得我的文章对你有用,请随意赞赏