PHP如果或声明不起作用

时间:2009-11-23 06:29:58

标签: php if-statement

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

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

当我们尝试这个时,无论变量具有什么值,即使输入的数据为false,它也会评估为true。当我们使用

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

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

由于

5 个答案:

答案 0 :(得分:8)

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

  

如果$_GET['1']不是"1",或$_GET['1']不是"2"

,那么

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

第二项测试只是说:

  

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

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

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

答案 1 :(得分:1)

下面的表达式总是计算为TRUE,因为x不是1或x不是2. x不能同时等于1和2!

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

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

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

请注意,您必须更改||到&&。

答案 2 :(得分:0)

如果您的代码是:

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

任何值或甚至空值都可以进入此条件。你可以改变||和&&意思是任何不等于“1”和“2”的字符串都可以输入你的条件

答案 3 :(得分:0)

如果不知道声明的意图,或者你开始的输入(或者你如何修改它),我无法确定问题是什么。

也就是说,如果FALSE等于1且$_GET['1']等于2,则第一个语句将仅评估为$_GET['2']

如果FALSE不等于1且$_GET['1']不等于2,则第二个语句仅评估为$_GET['2']

我猜你在第一次发言时想要的是什么

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

除非FALSE等于1且$_GET['1']等于2,否则评估为$_GET['2']

答案 4 :(得分:0)

尝试:

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

如果你在两个陈述中使用!=,那么你需要使用&&而不是||确保评估两个语句。

基本上,使用||表示第一个语句被评估,如果它是false,那么PHP将忽略第二个语句,因为你正在使用OR。但是如果你使用&&,那么PHP肯定会评估两个!=语句。