PHP foreach菜单包括



我正在开发一个网站,我正试图为我的标题包括我的导航菜单(这里的主要主题)。

导航菜单header.php文件中的代码如下:

<!-- topmenu -->  
<div class="menu-header">
    <div class="container">
            <ul class="top menu">
            <?php
            $nav = array("Home","About","Portfolio","Products","Services","Contact");
            foreach($nav as $item){
            if($item == $title){
                echo "<li class='current-menu-ancestor parent'><a href='$item.php'>$item</a></li>";
                }else{
                echo "<li><a href='$item.php'>$item</a></li>"; }
                }
                ?>
          </ul>
        </div>
</div>        
<!--/ topmenu -->

您可能注意到,在代码中是条件if($item == $title)。在我的index.php中,我包含了$title="Home";,我打算在这个if语句中使用它。

在我的index.php页面上,我包含了以下代码:

<?php
    include("header.php");
$title = "Home";
?>

谁能告诉我我哪里错了?

没有答案,但是注释不适合格式化的代码。您可能想要删除一些HTML:

$class = '';
if($item == $title) {
    $class = ' class"current-menu-ancestor parent"';
}
echo "<li{$class}><a href='$item.php'>$item</a></li>";

如果您决定更改菜单结构中的某些内容,并且只更改菜单HTML的一个副本,那么复制HTML可能会导致以后的维护问题。

header.php无法预知未来。如果您希望在include中设置变量,则需要在

之前设置它:
<?php
    $title = "Home";
    include("header.php");
?>

你只是换了行。

另外,我建议您在开发时启用最高级别的错误报告,因为它将在键入代码时可能发生的常见错误向您发出警告。

您可以通过在脚本的顶部添加以下两行来做到这一点:

error_reporting(~0);
ini_set("display_errors", "1″);

您需要在包含header.php之前设置$title !

<?php
    $title = "Home";
    include("header.php");
?>

最新更新