无限分级 层次输出 demo

$items1 = array(
        array('id' => 1, 'pid' => 0, 'name' => '一级11','level'=>1 ),
        array('id' => 11, 'pid' => 0, 'name' => '一级12','level'=>1  ),
        array('id' => 2, 'pid' => 1, 'name' => '二级21','level'=>2 ),
        array('id' => 10, 'pid' => 11, 'name' => '二级22','level'=>2 ),
        array('id' => 3, 'pid' => 1, 'name' => '二级23','level'=>2 ),
        array('id' => 12, 'pid' => 11, 'name' => '二级24','level'=>2 ),
        array('id' => 9, 'pid' => 1, 'name' => '二级25','level'=>2 ),
        array('id' => 14, 'pid' => 1, 'name' => '二级26','level'=>2 ),
        array('id' => 4, 'pid' => 9, 'name' => '三级31','level'=>3 ),
        array('id' => 6, 'pid' => 9, 'name' => '三级32','level'=>3 ),
        array('id' => 7, 'pid' => 4, 'name' => '四级41','level'=>4 ),
        array('id' => 8, 'pid' => 4, 'name' => '四级42','level'=>4 ),
        array('id' => 5, 'pid' => 4, 'name' => '四级43','level'=>4 ),
        array('id' => 13, 'pid' => 4, 'name' => '四级44','level'=>4 ),
        array('id' => 15, 'pid' => 8, 'name' => '五级51','level'=>5 ),
        array('id' => 16, 'pid' => 8, 'name' => '五级52','level'=>5 ),
        array('id' => 17, 'pid' => 8, 'name' => '五级53','level'=>5 ),
        array('id' => 18, 'pid' => 16, 'name' => '六级64','level'=>6 ),
); 
	
	foreach ($items1 as $item) {
		$temp[$item['id']]=$item;
	}
	
	foreach($items1 as $item)
	{
		if(isset($temp[$item['pid']]))
		{
			$temp[$item['pid']]['son'][]=&$temp[$item['id']];		
		}else
		{
			$tree[]=&$temp[$item['id']];
		}
	}
	
	

	function echotree($tree){
		foreach($tree as $data)
		{
				for($i=1;$i<$data['level'];$i++)
				{
					echo "-";
				}
				echo $data['name'];
				echo "<br/>";
				if($data['son'])
				{
					$level+=1;
					echotree($data['son']);
				}
		} 
	}
	
	 echotree($tree);

  

原文地址:https://www.cnblogs.com/xuyaoxiang1991/p/3438665.html