【问题标题】:Compare a variable against more than one (an array of) variables, with the same outcome, in PHP在 PHP 中将一个变量与多个(一组)变量进行比较,结果相同
【发布时间】:2013-02-27 23:00:43
【问题描述】:

我有一个简单的导航,它使用 php 来知道你在哪个“当前页面”上,让我的 css 指出这一点。

我的php代码:

<?php echo "\n"; if ($currentPage == 'about.php') { ?>

我想要做的是让这个按钮在其子页面中作为当前页面处于活动状态? 有没有办法在上面的代码中有多个页面?

我试过了,但是不行

<?php echo "\n"; if ($currentPage == 'about.php about2.php about3.php') { ?>

【问题讨论】:

  • if (something) { ... } else if (something_else) { ... } else { ... }?然而,这将很快变得非常丑陋/不可维护。
  • 数组呢? if (in_array($currentPage, array('about.php', 'about2.php', 'about3.php'))) {

标签: php navigation


【解决方案1】:

你可以使用in_array:

<?php $pages = Array("about.php","about2.php","about3.php"); ?>
<?php echo "\n"; if (in_array($currentPage,$pages)) { ?>

这基本上会通过一个数组并将值 ($currentPage) 与数组中的每个值进行比较。

【讨论】:

  • 抱歉我回来了,我已经按照上面的方法完成了,但我不能让它完全工作?如果我使用例如上面的(“about.php”,“about2.php”,“about3.php”),它只会选择原始的about.php。如果我使用 ("about.php","home.php","contact.php") 它们都可以正常工作吗?我需要在新页面中添加一些 php 代码或其他内容吗?
  • 似乎有什么问题?
  • 不起作用: 将起作用: 第二个使用已经存在的页面?这有关系吗?
  • 我不知道你在这种情况之后在做什么,可能。
  • 我已经把它放在下面了,有什么想法吗?我以为我没问题...直到我尝试过:(
【解决方案2】:

您可以使用in_array() 函数:http://php.net/manual/en/function.in-array.php

if (in_array($currentPage, array('about.php', 'about2.php'))) {
// Do Something
}

【讨论】:

    【解决方案3】:

    (不是一个答案,只是一个更新)

    这是我目前拥有的:(只有about.php激活开关)

        <?php $pages = Array("about.php","about2.php","about3.php"); ?>
            <?php echo "\n"; if (in_array($currentPage,$pages)) { ?>
                <li class="button on">
                <img src="style/images/clear.png" width="100px" height="100px" alt="clear_image" />
                About
                </li>
                <?php } else { ?>
                <li class="button off">
                    <a class="nav" href="about.php">
                        <img src="style/images/clear.png" width="100px" height="100px" alt="clear_image" />
                        About
                    </a>
                </li>
            <?php } ?>
    

    如果我将页面更改为 home.php,contact.php(最初在导航中)它们都可以同时打开它们吗? 所以我不确定我需要做什么才能包含我的新页面?

    这是我的其他按钮之一:

         <?php echo "\n"; if ($currentPage == 'contact.php') { ?>
                <li class="button on">
                    <img src="style/images/clear.png" width="100px" height="100px" alt="clear_image" />
                    Contact
                </li>
                <?php } else { ?>
                <li class="button off">
                    <a class="nav" href="contact.php">
                        <img src="style/images/clear.png" width="100px" height="100px" alt="clear_image" />
                        Contact
                    </a>
                </li>
            <?php } ?>
    

    这就是为什么它会拾取原始页面而不是我的新页面吗?

    【讨论】:

    • 你还没有定义$currentPage
    • 我在页面顶部有这个: 你是这个意思吗?
    • 是的,因为页面不存在。 basename($_SERVER['SCRIPT_NAME']); 等于脚本正在运行的页面的名称
    • 真的很抱歉,刚刚意识到我做错了什么,简而言之,在 about.php 页面上,我已将导航切换到包含此页面的额外链接的导航..... .........我没有用 php 数组更新此导航的代码...对不起,感谢您的所有时间!它的工作就像一个魅力! :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-09
    • 2023-03-16
    • 2014-02-07
    • 1970-01-01
    • 1970-01-01
    • 2012-01-28
    • 1970-01-01
    相关资源
    最近更新 更多