php - 查看数组中的一项是否为真

标签 php css arrays if-statement drop-down-menu

我正在尝试将一个菜单放在一起,它会感知加载的页面。这个站点不是在 CMS 中完成的,而是直接的 PHP/HTML 代码。

我目前有主要链接的导航。有一个下拉菜单,我遇到了问题。我需要能够查看父项或任何下拉子项是否处于事件状态。如果其中一个 child 很活跃。在下面的示例中,这是“FAQ”,子项是“FAQ1”、“FAQ2”和“FAQ3”。

在这个例子中,我使用了一个名为“active”的 CSS 状态。

<style>
a{color:red;}
.active{color:blue;}
</style>

这是用于菜单的脚本。主页、产品和联系人的链接按预期工作。

<ul>
<li><a href="index.php" id="homenav" <?php if (strpos($_SERVER['PHP_SELF'], 'index.php')) echo 'class="active"';?>>Home</a></li>
<li><a href="products.php" id ="prodnav" <?php if (strpos($_SERVER['PHP_SELF'], 'products.php')) echo 'class="active"';?>>Products</a></li>
<li><a href="faq.php" id ="faqnav" <?php if (strpos($_SERVER['PHP_SELF'], 'faq.php, faq1.php, faq2.php, faq3.php')) echo 'class="active"';?>>FAQ</a>
    <ul>
        <li><a href="faq1.php">FAQ1</a></li>
        <li><a href="faq2.php">FAQ2</a></li>
        <li><a href="faq3.php">FAQ3</a></li>
    </ul>
</li>
<li><a href="contact.php" id ="connav" <?php if (strpos($_SERVER['PHP_SELF'], 'contact.php')) echo 'class="active"';?>>contact us</a></li>
</ul>

请问我应该如何编写这一行以让它像其他行一样工作?

<li>
    <a href="faq.php" id ="faqnav" 
    <?php 
    if (strpos($_SERVER['PHP_SELF'], 'faq.php, faq1.php, faq2.php, faq3.php')) 
    echo 'class="active"'; 
    ?>
    >FAQ</a>
</li>

最佳答案

strpos() 每个参数只接受一个字符串,你不能给它一个列表。 试试这个:

<?php if (in_array(basename($_SERVER['PHP_SELF']), array('faq.php', 'faq1.php', 'faq2.php', 'faq3.php'))) echo 'class="active"';?>

  • basename()从文件名中剥离路径,因此您只有纯文件名
  • in_array()然后检查此路径是否在数组中
  • array()生成一个字符串数组,交给in_array() .请注意,有 4 个单独的字符串,而不是代码中的一个长字符串。

关于php - 查看数组中的一项是否为真,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21103039/

相关文章:

javascript - javascript中有没有办法找出某个字符串在数组中的次数?

php - 未找到 Laravel 5.4 View [名称]

html - 极其简单的 flexbox 布局,溢出 : hidden -- vertical mis-alignment in Firefox

css - Wordpress 在导入时设置图像高度

jQuery removeAttr ('style')在 Firefox 和 Safari 中不起作用

javascript - 检查字符串是否以给定的目标字符串结尾 | javascript

php - 如何在 PHP 中处理 1900 年之前的日期?

php - 动态PHP/mysql下拉菜单问题

php - 我认为我的 Http 类可能正在做它不应该做的工作

javascript - 使用 jQuery each() 函数返回一个值