Если переменная равна нескольким строкам в списке навигации - PullRequest
1 голос
/ 23 марта 2011

Я нашел что-то похожее на этот вопрос, но оно не было связано со строками. Я просто ищу лучший способ написать следующий код, я подумал, что должна быть какая-то короткая версия, о которой я не знаю.

<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");
?>

Мой встроенный PHP в элементе li

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

Ответы [ 4 ]

5 голосов
/ 23 марта 2011
$filenames = array("vehicles.php","vacations.php","other-prizes.php");
if (in_array($filename, $filenames)) {
    // code here
}
4 голосов
/ 23 марта 2011

Вы можете использовать переключатель:

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;
}
2 голосов
/ 23 марта 2011

Попробуйте это:

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

in_array Функция подходит для того, что вы пытаетесь сделать.

2 голосов
/ 23 марта 2011

Вы можете использовать

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