Rumah >pembangunan bahagian belakang >tutorial php >这样的数组怎么让它树状显示呢?
树状 无限分类
Array( [1] => Array ( [id] => 1 [name] => 世界 [pid] => 0 [2] => Array ( [id] => 2 [name] => 中国 [pid] => 1 [4] => Array ( [id] => 4 [name] => 湖南 [pid] => 2 ) ) [3] => Array ( [id] => 3 [name] => 美国 [pid] => 1 ) ))
本身就是树状,有pid还不简单么?递归就行了
$a = Array( 1 => Array( 'id' => 1, 'name' => '世界', 'pid' => 0, 2 => Array( 'id' => 2, 'name' => '中国', 'pid' => 1, 4 => Array( 'id' => 4, 'name' => '湖南', 'pid' => 2, ), ), 3 => Array( 'id' => 3, 'name' => '美国', 'pid' => 1, ), ),);tree($a);function tree($ar) { if(! is_array($ar)) return; echo '<ul>'; foreach($ar as $item) { echo "$item[id] $item[name]"; foreach($item as $t) { if(is_array($t)) { tree(array($t)); } } } echo '</ul>';}
1 世界 2 中国 4 湖南 3 美国
<ul>1 世界<ul>2 中国<ul>4 湖南</ul></ul><ul>3 美国</ul></ul>
给你个有趣的玩法(具体有什么用也不晓得)
$a = Array( 1 => Array( // 'id' => 1, 'name' => '世界', // 'pid' => 0, 2 => Array( // 'id' => 2, 'name' => '中国', // 'pid' => 1, 4 => Array( // 'id' => 4, 'name' => '湖南', // 'pid' => 2, ), ), 3 => Array( // 'id' => 3, 'name' => '美国', // 'pid' => 1, ), ),);$awesome = new RecursiveTreeIterator( new RecursiveArrayIterator($a), null, null, RecursiveIteratorIterator::LEAVES_ONLY ); foreach ($awesome as $line) echo $line . PHP_EOL;
|-世界 | |-中国 | \-湖南 \-美国
灰常感谢!痛哭流涕!!折腾几天了,,,