2016-03-30 2 views
0

Первый с равными будет работать, и я ожидал бы этого. Но второй работает не так, как ожидалось.Equal not Equal php

$nicktest = "new"; 
if ($nicktest == "new" || $nicktest == "fun" || $nicktest == "norm" || $nicktest == "pvp") 
     { 
      $odpoved = "Ok it works."; 
      echo $odpoved; 
      return; 
} 

     $nicktest = "new"; 
if ($nicktest != "new" || $nicktest != "fun" || $nicktest != "norm" || $nicktest != "pvp") 
     { 
      $odpoved = "Ok it works too why?"; 
      echo $odpoved; 
      return; 
} 
+1

Ваш второй, если всегда будет правдой. Подумайте об этом: как может быть что-то равным «новым» и «забавным» одновременно? – Rizier123

+0

Чтобы проверить, соответствует ли что-либо одному в списке элементов, используйте 'или'/'||', чтобы проверить, НЕ является ли это что-то, использовать 'и'/'&&'. – Jon

ответ

0

Ваши 4 условия получаем следующую оценку:

ложь, правда, правда, правда

Теперь

if (false || true || true || true) { 
    // Code block is actually evaluated 
} 

Если бы произошло бы:

if (false || false || false || false) { 
    // Code block wouldn't be evaluated 
} 

В соответствии с этой схемой e, как минимум одно условие true получит код для оценки

+0

Спасибо, это намного больше смысла, и я нормально не имею таких проблем. Я не знаю, как я мог застрять на этом: D –

+0

Я не знаю, почему, но я переключил или, и все еще не работает, не имеет значения, если $ nicktest является «новым» «забавным» или что-то случайным .. if ($ nicktest! = "new" && $ nicktest! = "fun" && $ nicktest! = "norm") –