【问题标题】:If variable equals multiple strings in a navigation list如果变量等于导航列表中的多个字符串
【发布时间】:2011-03-23 15:11:37
【问题描述】:

我发现了与此问题类似的内容,但与字符串无关。我只是在寻找编写以下代码的最佳方法,我认为必须有一些我不知道的简短版本。

<ul id="top-nav">
    <li <?php if($filename == "index.php"){echo ("class=\"current\"");} ?>><a href="index.php" title="Home">Home</a></li>
    <li <?php if($filename == "cause.php"){echo ("class=\"current\"");} ?>><a href="cause.php" title="Cause">Cause</a></li>
    <li><a href="order.php" title="Order">Order</a></li>
    <li class="drop-down<?php if($filename == "grand-prize-one.php" | $filename == "grand-prize-two.php"){echo (" current");} ?>"><a href="grand-prize-one.php" title="Grand Prizes">Grand Prizes</a>
      <ul>
        <li><a href="grand-prize-one.php" title="Grand Prize One">Grand Prize One</a></li>
        <li><a href="grand-prize-two.php" title="Grand Prize Two">Grand Prize Two</a></li>
      </ul>
    </li>
    <li <?php if($filename == "early-bird.php"){echo ("class=\"current\"");} ?>><a href="early-bird.php" title="Early Bird">Early Bird</a></li>
    <li class="drop-down<?php if($filename == "vehicles.php" || $filename == "vacations.php" || $filename == "other-prizes.php"){echo (" current");} ?>"><a href="vehicles.php" title="Electronics &amp; more">Other Prizes</a>
      <ul>
        <li><a href="vehicles.php" title="Vehicles">Vehicles</a></li>
        <li><a href="vacations.php" title="Vacations">Vacations</a></li>
        <li><a href="other-prizes.php" title="Electronics &amp; more">Electronics &amp; more</a></li>
      </ul>
    </li>
    <li <?php if($filename == "winners.php"){echo ("class=\"current\"");} ?>><a href="winners.php" title="Winners">Winners</a></li>
  </ul>

有没有更短的写法$filename == "vehicles.php" || $filename == "vacations.php" || $filename == "other-prizes.php"?我怀疑我是否需要它来容纳更多 5-10 个可能的字符串。

谢谢

解决方案

对于那些发现这个问题的人,我最终这样做了:

用我的主 PHP

<?php
 // My other code
 $grandPrizes = array("grand-prize-one.php","grand-prize-two.php");
 $otherPrizes = array("vehicles.php","vacations.php","other-prizes.php");
?>

我在 li 元素中的内联 PHP

<?php if (in_array($filename, $grandPrizes)) {echo " current";} ?>

【问题讨论】:

  • 请使用 ||而不是 |用于或比较。
  • ||是一个逻辑运算符,|是位运算符
  • 哇哦。谢谢你。我不知道。我不知道我从哪里得到的,但它总是对我有用。只是好奇,为什么它会起作用?
  • 如果 $a 或 $b 为真 ($a || $b),逻辑运算符将返回真。位运算符将返回在 $a 或 $b ($a | $b) 中设置的位。如果返回的位不等于 0,它们将等于 true(如果您没有使用 ===!== 运算符)。
  • 顺便说一句,你不必使用方括号来使用 echo (echo (" current"); => echo " current";.

标签: php variables navigation if-statement operators


【解决方案1】:
$filenames = array("vehicles.php","vacations.php","other-prizes.php");
if (in_array($filename, $filenames)) {
    // code here
}

【讨论】:

    【解决方案2】:

    你可以使用开关:

    http://php.net/manual/en/control-structures.switch.php

    switch($filename) {
        case "vehicles.php":
        case "vacations.php":
        case "other-prizes.php":
            echo "class=\"current\"";
            break;
    }
    

    【讨论】:

      【解决方案3】:

      试试这个:

      <?php 
          if(in_array($filename, array("vehicles.php", "vacations.php", "other-prizes.php")) {
              echo ("class=\"current\"");
          } 
      ?>
      

      in_array 函数适合您尝试做的事情。

      【讨论】:

        【解决方案4】:

        你可以使用

        if(in_array($filename, array("vehicles.php", "vacations.php", "other-prizes.php"))){
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-07-11
          • 1970-01-01
          • 2012-04-01
          • 2014-02-18
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多