PHP如果或声明不起作用

kwh*_*let 2 php if-statement

我们正在尝试使用下面的代码

if (($_GET['1'] != "1") || ($_GET['1'] != "2")) {
Run Code Online (Sandbox Code Playgroud)

当我们尝试这个时,无论变量具有什么值,它都会被评估为真,即使输入的数据是假的.当我们使用

if (($_GET['1'] == "1") || ($_GET['1'] == "2")) {
Run Code Online (Sandbox Code Playgroud)

并输入将使其返回false的数据,它正常工作.我们已经颠倒了if语句的方式,所以我们可以使这个工作,但我想知道为什么这不起作用,如果它是我做错了或在php中与or和不等运算符的限制

谢谢

Dou*_*ner 11

你的第一个测试就是这样说:

如果$_GET['1']比其他任何东西"1"$_GET['1']比其他任何"2"

表达式将始终通过:如果它等于1它将!= '2'在if语句的后半部分通过测试.如果它等于2它将通过!= '1'上半部分的测试,并且永远不会进入测试的后半部分.

第二个测试简单地说:

如果$_GET['1']等于"1"OR $_GET['1']等于"2"那么表达式应该通过

您可能想要这个表达式,只有当两个参数都没有包含正确的值时才会传递:

if(($_GET['1'] != '1') && ($_GET['1'] != '2'))
Run Code Online (Sandbox Code Playgroud)