2014-02-11 2 views
-1

Почему это не работает:Не кондиционировать в PHP не работает

if ($name != "alex" or "james"){ 
     echo '<script> alert("error");</script>'; 
     echo '<script> window.location.replace("demo.php");</script>'; 
} 

, но это?

if ($name != "yo"){ 
    echo '<script> alert("error");</script>'; 
    echo '<script> window.location.replace("demo.php");</script>'; 
} 

Я также попытался использовать || вместо или и $name != "alex" or $name != "james" но также не работает. Кто-нибудь знает, почему?

+1

Сколько раз потребуется, прежде чем люди перестанут задавать одни и те же вопросы и найдут множество раз, на которые они уже ответили: 'if ($ name! =" Alex "или $ name! =" James ") { ' –

+0

@MarkBaker это один из тех [Dunning-Kruger] (http://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect) связанных вещей, где люди, которые не могут решить логические головоломки, также не могут справиться ища, как это сделать. –

+0

Я думаю, что это несправедливо, потому что это был простой ответ ... И в любом случае это было не так много людей, которые ошибались, чем пишут ... Не поймите меня неправильно Я люблю снобов !! – maxisme

ответ

3

Я думаю, что вы ищет и:

if ($name != "alex" or "james"){ 

Изменен:

if ($name != "alex" && $name != "james"){ 

Проблема с вашим он проверяет, если имя не равно Алекс или, если «» Джеймса эквивалентен истинно, что это так как она определена.

+0

Да, вы правы ... Длинный день – maxisme

+0

Кто-нибудь хотел бы объяснить, почему они отказали в ответе? – Anonymous

+0

$ name = "alex"? – maxisme

0

Ваш первый пример не будет работать, потому что вам нужно снова сравнить $name.

if ($name != "alex" && $name != "james"){ 
    echo '<script> alert("error");</script>'; 
    echo '<script> window.location.replace("demo.php");</script>'; 
} 
+0

Это всегда было бы равно true, поскольку имя никогда не может сравниться с двумя разными способами. – Anonymous

+0

Нет ... Говорят, что если '$ name' равно этому ** или **, если' $ name' равно этому, тогда сделайте что-то, если это не так, не делайте этого. – James

+0

Вы говорите, если имя ** не ** равно alex или оно не ** равно james, то это правда, но оно не может совпадать сразу. – Anonymous

0

объединить свое состояние, как этот

if ($name != "alex" || $name!="james"){ 
     echo '<script> alert("error");</script>'; 
     echo '<script> window.location.replace("demo.php");</script>'; 
} 

если вы хотите $name не равно как alex и james использования && слиться условие как этот

if ($name != "alex" && $name!="james"){ 
      echo '<script> alert("error");</script>'; 
      echo '<script> window.location.replace("demo.php");</script>'; 
    } 
+1

Это всегда было бы правдой, так как имя никогда не может сравниться с двумя разными вещами. – Anonymous

Смежные вопросы