PHP if или statement не работает

Мы пытаемся использовать приведенную ниже часть кода

if (($_GET['1'] != "1") || ($_GET['1'] != "2")) { 

Когда мы пробуем это независимо от того, какое значение имеет переменная, оно будет оцениваться как истинное, даже если данные введены как ложные. Когда мы используем

 if (($_GET['1'] == "1") || ($_GET['1'] == "2")) { 

и помещать данные, которые заставят его возвращать false, он работает правильно. Мы изменили способ выполнения инструкции if, чтобы мы могли получить эту работу, но я хотел бы знать, почему это не работает, если это то, что я делаю неправильно или ограничение в php с операторами или и не равными

благодаря

Related of "PHP if или statement не работает"

Ваш первый тест говорит следующее:

Если $_GET['1'] является чем-то другим, кроме "1" ИЛИ $_GET['1'] это что-то иное, чем "2"

Выражение всегда будет проходить: если оно равно 1 оно будет проходить тест != '2' во второй половине вашего оператора if. Если он равен 2 он пройдет тест != '1' в первом тайме и никогда не попадет во вторую половину теста.

Второй тест просто говорит:

Если $_GET['1'] равно "1" ИЛИ $_GET['1'] равно "2" тогда выражение должно пройти

Вы, вероятно, захотите это выражение, которое пройдет, только если ни один из параметров не имеет правильное значение:

 if(($_GET['1'] != '1') && ($_GET['1'] != '2')) 

Выражение ниже всегда будет равно TRUE, потому что либо x не равно 1, либо x не равно 2. Невозможно, чтобы x мог одновременно равняться как 1, так и 2!

 ($x != 1) || ($x != 2) 

Противоположно

 ($x == 1) || ($x == 2) 

является

 ($x != 1) && ($x != 2) 

Обратите внимание, что вы должны изменить || к &&.

если ваш код:

 if (($_GET['1'] != "1") || ($_GET['2'] != "2")) { 

любое значение или даже нулевое значение может ввести это условие. вы можете изменить || to && означает, что любая строка, не равная «1» и «2», может ввести условие

Не зная намерения заявления или того, с чего вы начали (или как вы его переработали), я не могу точно сказать, в чем проблема.

Тем не менее, первый оператор будет оценивать только FALSE если $_GET['1'] равно 1, а $_GET['2'] равно 2.

Второй оператор будет оценивать только FALSE если $_GET['1'] не равно 1, а $_GET['2'] не равно 2.

Я предполагаю, что вы хотели в своем первом заявлении

 if (($_GET['1'] != "1") && ($_GET['2'] != "2")) { 

который равен FALSE если $_GET['1'] равно 1, а $_GET['2'] равно 2.

Пытаться:

if (($ _GET ['1']! = "1") && ($ _GET ['2']! = "2")) {

Если вы используете! = В обоих утверждениях, тогда вам нужно использовать && вместо || чтобы оба утверждения оценивались.

По существу, используя || означает, что первый оператор получает оценку, и если он является ложным, тогда PHP игнорирует второй оператор, потому что вы используете OR. Но если вы используете &&, то PHP обязательно оценят оба оператора! =.