ホームページ >バックエンド開発 >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;
|-世界 | |-中国 | \-湖南 \-美国
ありがとうございました!激しく泣く! !数日間苦戦しました、、、