kullanarak 'veya' operatör menü için çalışmıyor

3 Cevap

Burada benim kodda, ben kullanmak "aktif" olarak adlandırılan bir CSS sınıfı varsa $ _GET ['sayfa'] == öğreticiler, vb php, mysql, ..

Sorun 'sayfa' değişkeni bu değerlerin herhangi bir eşit değildir bile, bu durumda Kişiye düğme herhangi bir nedenle hala aktiftir.

Any ideas why this would be happening? Am I using the 'or' (||) operand incorrectly?

<?php if($_GET['page'] == 'tutorials' || 'php' || 'mysql' || 'html' || 'css' || 'js') { ?>
      <li class="active"> <?php } else { ?> <li> <?php } ?>

      <a href="index.php?page=tutorials">Tutorials</a>
        <ul>
     <li><a href="index.php?page=php">PHP</a></li>
     <li><a href="index.php?page=mysql">MySQL</a></li>
     <li><a href="index.php?page=html">HTML</a></li>
     <li><a href="index.php?page=css">CSS</a></li>
     <li><a href="index.php?page=js">JS</a></li>
        </ul>
        </li>

3 Cevap

Sen || yanlış kullanıyorsunuz.

Bunu bu şekilde kullanmak için ayrı ayrı bütün durumu test etmek gerekir. Yani yapabilirdi:

<?php if($_GET['page'] == 'tutorials' || $_GET['page'] == 'php' || $_GET['page'] == 'mysql' || $_GET['page'] == 'html' || $_GET['page'] == 'css' || $_GET['page'] == 'js') { ?>

İşte bir alternatif sözdizimi:

<?php
  if(in_array($_GET['page'], array('tutorials', 'php', 'mysql', 'html', 'css', 'js'))) {
?>

arrays PHP Control Structures hakkında daha fazla okuyun ve in_array()

Yapamazsınız | | böyle dizeleri. İşte olarak PHP tarafından ediyor true OR true OR true OR .... If () olarak yeniden yazılmalıdır

if ($_GET['page'] == 'tutorials') || ($_GET['page'] == 'php') || etc....)

Yanlış | | Sen kullanıyorsunuz.

Basically what you are doing is testing to see if $_GET['page'] == 'tutorials' and that is it - each subsequent 'php', 'mysql' etc evaluates to true. So you get:

$_GET['page'] || true || true || true || true

Bunu basitleştirmek. Bir dizideki tüm eşyalarını koymak ve onların var olmadığını görmek.

$pages = array('tutorials', 'php', 'mysql' /* etc */);
if (in_array($_GET['page'], $pages)) {
    // handle
}