ホームページ > バックエンド開発 > PHPチュートリアル > このような配列をツリー状に表示するにはどうすればよいでしょうか?

このような配列をツリー状に表示するにはどうすればよいでしょうか?

WBOY
リリース: 2016-06-23 14:21:11
オリジナル
1156 人が閲覧しました

ツリー形状無制限の分類

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;  
ログイン後にコピー

  |-世界  | |-中国  |   \-湖南    \-美国
ログイン後にコピー

ありがとうございました!激しく泣く! !数日間苦戦しました、、、

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート