Wenn die variable gleich mehrere Zeichenfolgen in eine Navigations-Liste

Fand ich etwas ähnliches wie das hier Frage, aber es war nicht im Zusammenhang zu Zeichenketten. Ich bin gerade auf der Suche nach der beste Weg, um den folgenden code schreiben, ich dachte mir, es werden einige kurze version weiß ich nicht.

<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>

Gibt es einen kürzeren Weg zu schreiben $filename == "vehicles.php" || $filename == "vacations.php" || $filename == "other-prizes.php"? Ich bezweifle, dass ich jemals brauchen es, um Platz für weitere 5-10 möglichen Zeichenfolgen.

Danke

LÖSUNG

Für diejenigen, für die diese Frage, ich landete, dies zu tun:

Mit meinem main PHP

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

Meine inline-PHP in das li-element

<?php if (in_array($filename, $grandPrizes)) {echo " current";} ?>
  • Bitte verwenden Sie || anstelle von | für oder-Vergleiche.
  • || ist ein logischer operator, | ist ein bitweiser operator
  • Oh wow. Danke. Ich hatte keine Ahnung. Ich weiß nicht, wo ich das herhabe, aber es ist immer für mich gearbeitet. Einfach nur neugierig, warum funktioniert es?
  • Der logische operator gibt true zurück, wenn $a oder $b true ist ($a || $b). Der bitweise operator zurückkehren wird, die bits, die eingestellt sind in $a oder $b ($a | $b). Wenn die zurückgegebenen bits nicht gleich null, Sie wird gleich true (wenn Sie nicht mit der === oder !== Betreiber).
  • Übrigens, Sie müssen nicht mit Klammern für echo (echo (" current"); => echo " current";.
  • Oh danke Michiel. Ich hatte das Gefühl, diese Frage würde den Fehler in meinem PHP wissen.
  • Ich denke, dass die Lösung Teil war ziemlich nett, es kopiert nicht die Antwort auf die Frage aber immer noch ein Mehrwert für die Frage.

Schreibe einen Kommentar