百度已收录

递归

function getTree($array, $superiorId = 0, $level = 0, &$list = array())
{
    foreach ($array as $key => $value)
    {
        // 第一次遍历,找到父节点为根节点的节点 也就是pid=0的节点
        if ($value['superiorId'] == $superiorId)
        {
            // 父节点为根节点的节点,级别为0,也就是第一级
            $value['level'] = $level;
            // 把数组放到list中
            $list[] = $value;
            // 把这个节点从数组中移除,减少后续递归消耗
            unset($array[$key]);
            // 开始递归,查找父ID为该节点ID的节点,级别则为原级别+1
            getTree($array, $value['id'], $level+1, $list);
        }
    }
    return $list;
}