多次元配列と再帰を使用してナビゲーションを構築しようとしています。次のコードがあります。
最初に<?php $title = 'pagename'; ?>
、doctype の下の個々のページで実行します (アクティブなクラスの検出のため)。
配列:
<?php
$nav_array = array ('Home' => 'index.php',
'About' => array ( 'about.php', array (
'Michael' => array( 'michael.php', array (
'Blog' => 'blog.php',
'Portfolio' => 'portfolio.php')),
'Aaron' => 'aaron.php' ,
'Kenny' => 'kenny.php',
'David'=> 'david.php')),
'Services' => array ( 'services.php', array (
'Get Noticed' => 'getnoticed.php',
'Hosting' => 'hosting.php')),
'Clients' => 'clients.php',
'Contact Us' => 'contact.php'
);
$base = basename($_SERVER['PHP_SELF']);
?>
FOREACH: (ナビゲーションを生成)
<ul>
<?php
foreach ($nav_array as $k => $v) {
echo buildLinks ($k, $v, $base);
}
?>
</ul>
buildLinks:
<?php // Building the links
function buildLinks ($label_name, $file_name, $active_class) {
if ($label_name == $title) {
$theLink = "<li><a class=\"selected\" href=\"$file_name\">$label_name</a></li>\n";
} else {
$theLink = "<li><a href=\"$file_name\">$label_name</a></li>\n";
}
return $theLink;
}
?>
結果: http://khill.mhostiuckproductions.com/siteLSSBoilerPlate/arraytest.php
サブメニューは、CSS を使用して親要素のホバーに表示されます。配列以外は何も変更せずに、複数のサブレベルを通過できる必要があります。
foreach が配列の残りの部分を再帰的に通過するようにするにはどうすればよいですか?
(注:アクティブのクラスを現在のページに適用し、矢印のクラスをサブメニューが存在する親要素に適用する機能が必要です。)