【发布时间】: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 & 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 & more">Electronics & 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