ホームページ > バックエンド開発 > PHPチュートリアル > 再帰なしで多次元配列を走査する方法 (次元数は可変)

再帰なしで多次元配列を走査する方法 (次元数は可変)

WBOY
リリース: 2016-06-23 13:26:46
オリジナル
843 人が閲覧しました

既存の配列

$tree = array (		array (				'ID' => 1,				'PARENT' => 0,				'NAME' => '祖父',				'CHILD' => array (						array (								'ID' => 3,								'PARENT' => 1,								'NAME' => '叔伯' 						),						array (								'ID' => 4,								'PARENT' => 1,								'NAME' => '父亲',								'CHILD' => array (										array (												'ID' => 5,												'PARENT' => 4,												'NAME' => '儿子' 										) 								) 						) 				)				 		),				array (				'ID' => 2,				'PARENT' => 0,				'NAME' => '祖母' 		) );
ログイン後にコピー

効果を実現するための HTML コード
<ul>	<li>祖父		<ul>			<li>叔伯</li>			<li>父亲				<ul>					<li>儿子</li>				</ul>			</li>		</ul>	</li>	<li>祖母</li></ul>
ログイン後にコピー

多次元配列の具体的な次元はわかりません。データベースから取得した情報に基づいて取得されます。

この効果は再帰を使用せずに達成できますか?


ディスカッション (解決策) への返信

あなたは再帰的です、もちろん rree まで再帰する必要があります

あなたは再帰的です、もちろんあなたは再帰的であるべきです

$tree = array (        array (                'ID' => 1,                'PARENT' => 0,                'NAME' => '祖父',                'CHILD' => array (                        array (                                'ID' => 3,                                'PARENT' => 1,                                'NAME' => '叔伯'                         ),                        array (                                'ID' => 4,                                'PARENT' => 1,                                'NAME' => '父亲',                                'CHILD' => array (                                        array (                                                'ID' => 5,                                                'PARENT' => 4,                                                'NAME' => '儿子'                                         )                                 )                         )                 )                          ),               array (                'ID' => 2,                'PARENT' => 0,                'NAME' => '祖母'         ) );function 递归($ar, $deep=0) {  echo str_repeat("\t", $deep) . "<ul>\n";  foreach($ar as $item) {    echo str_repeat("\t", $deep + 1) . "<li>$item[NAME]";    if(isset($item['CHILD'])) {      echo "\n";      递归($item['CHILD'], $deep+2);    }    echo "</li>\n";  }  echo str_repeat("\t", $deep) . "</ul>\n";}递归($tree);
ログイン後にコピー
ログイン後にコピー


再帰によってこれを取得したのではなく、あなたが書いた記事のメソッドを使用しました http://bbs.csdn.net/topics/370094009
データのプロトタイプは
$tree = array (        array (                'ID' => 1,                'PARENT' => 0,                'NAME' => '祖父',                'CHILD' => array (                        array (                                'ID' => 3,                                'PARENT' => 1,                                'NAME' => '叔伯'                         ),                        array (                                'ID' => 4,                                'PARENT' => 1,                                'NAME' => '父亲',                                'CHILD' => array (                                        array (                                                'ID' => 5,                                                'PARENT' => 4,                                                'NAME' => '儿子'                                         )                                 )                         )                 )                          ),               array (                'ID' => 2,                'PARENT' => 0,                'NAME' => '祖母'         ) );function 递归($ar, $deep=0) {  echo str_repeat("\t", $deep) . "<ul>\n";  foreach($ar as $item) {    echo str_repeat("\t", $deep + 1) . "<li>$item[NAME]";    if(isset($item['CHILD'])) {      echo "\n";      递归($item['CHILD'], $deep+2);    }    echo "</li>\n";  }  echo str_repeat("\t", $deep) . "</ul>\n";}递归($tree);
ログイン後にコピー
ログイン後にコピー
です
それは私が望む HTML に進化できます再帰なしで達成する コードは効果的ですか?

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