PHP foreach菜单包括

时间:2011-10-13 16:28:40

标签: php html if-statement include foreach

我正在开发一个网站,我正在尝试一个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";
?>

谁能告诉我哪里出错了?

3 个答案:

答案 0 :(得分:3)

header.php无法展望未来。如果要在include中设置变量,则需要在之前设置:

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

所以你基本上只是换了一行。

此外,我建议您在开发时将错误报告启用到最高级别,因为它会为您提供有关键入代码时可能发生的常见错误的警告。

您可以通过在脚本顶部添加以下两行来完成此操作:

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

或通过更改PHP配置。

答案 1 :(得分:3)

不是答案,但评论不适合格式化代码。您可能希望删除部分HTML:

$class = '';
if($item == $title) {
    $class = ' class"current-menu-ancestor parent"';
}

echo "<li{$class}><a href='$item.php'>$item</a></li>";

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

答案 2 :(得分:2)

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

<?php
    $title = "Home";

    include("header.php");
?>