If构造只显示else值-PHP

If构造只显示else值-PHP,php,Php,以下是我的声明: if($row_x['xfield']==$_POST['x1'] AND $row_x['yfield']==$_POST['y']) { echo "ok"; } else { echo "invalid"; } 当两者不相等时,必须显示“无效”或“确定”。但在这种情况下,无论是否有效,它都会显示“invalid” 有什么线索吗?你说“当两者不相等时”。。。暗示您将要使用“!=”而不是比较中的“==”。请参阅此T/F图了解&&: --------------

以下是我的声明:

if($row_x['xfield']==$_POST['x1'] AND $row_x['yfield']==$_POST['y'])
{
   echo "ok";
}
else {
   echo "invalid";
}

当两者不相等时,必须显示“无效”或“确定”。但在这种情况下,无论是否有效,它都会显示“invalid”


有什么线索吗?

你说“当两者不相等时”。。。暗示您将要使用“!=”而不是比较中的“==”。请参阅此T/F图了解&&:

--------------
| X | && | Y |
--------------
| F | F  | F |
--------------
| F | F  | T |
--------------
| T | F  | F |
--------------
| T | T  | T |
--------------
X语句必须为真,Y语句必须为真。在你的例子中

$row_x['xfield']==$_POST['x1']
必须是真实的,也必须是真实的

$row_x['yfield']==$_POST['y']

但如果我读了你的问题,你会希望两个陈述都是假的,以表示“无效”。因此,您需要将“==”替换为“!=”在每一句话中。

你说“当两者不相等时”。。。暗示您将要使用“!=”而不是比较中的“==”。请参阅此T/F图了解&&:

--------------
| X | && | Y |
--------------
| F | F  | F |
--------------
| F | F  | T |
--------------
| T | F  | F |
--------------
| T | T  | T |
--------------
X语句必须为真,Y语句必须为真。在你的例子中

$row_x['xfield']==$_POST['x1']
必须是真实的,也必须是真实的

$row_x['yfield']==$_POST['y']

但如果我读了你的问题,你会希望两个陈述都是假的,以表示“无效”。因此,您需要将“==”替换为“!=”在每个语句中。

这是因为它们中的任何一个都不正确,或者两者都不正确

您使用的是&&/AND,因此两者必须匹配,因为您得到的是else结果,这意味着它们中的任何一个都不相等或两者都不相等

你可以通过下面的方法来检查

if($row_x['xfield']==$_POST['x1']){
   echo ' xfiekd  is = to x1';
   if($row_x['yfield']==$_POST['y']){
     echo ' yfiekd  is = to y and aslo 1 is true';
   }else{ echo 'y is false' }


}
else{
   echo ' xfiekd  is = to x1' is false;
   if($row_x['yfield']==$_POST['y']){
     echo ' yfiekd  is = to y and aslo 1 is true';
   }else{ echo 'y is false' }


}
若要在至少一个条件为真时进入if函数体,您需要使用
|
而不是AND

文与OR的区别

和的真值表

  a    b

true  true   = true
true  false  = false
false  false = false
false  true  = false
OR的真值表

  a    b

true  true   = true
true  false  = true
false true   = true
false false  = true
true  false  = true

这是因为它们中的任何一个都不是真的,或者两者都不是

您使用的是&&/AND,因此两者必须匹配,因为您得到的是else结果,这意味着它们中的任何一个都不相等或两者都不相等

你可以通过下面的方法来检查

if($row_x['xfield']==$_POST['x1']){
   echo ' xfiekd  is = to x1';
   if($row_x['yfield']==$_POST['y']){
     echo ' yfiekd  is = to y and aslo 1 is true';
   }else{ echo 'y is false' }


}
else{
   echo ' xfiekd  is = to x1' is false;
   if($row_x['yfield']==$_POST['y']){
     echo ' yfiekd  is = to y and aslo 1 is true';
   }else{ echo 'y is false' }


}
若要在至少一个条件为真时进入if函数体,您需要使用
|
而不是AND

文与OR的区别

和的真值表

  a    b

true  true   = true
true  false  = false
false  false = false
false  true  = false
OR的真值表

  a    b

true  true   = true
true  false  = true
false true   = true
false false  = true
true  false  = true

替换
,当至少有一个相等时,它将显示
ok
替换
,当至少有一个相等时,它将显示
ok

if($row_x['xfield']==$_POST['x1'] OR $row_x['yfield']==$_POST['y'])
{
   echo "ok";
}
else {
   echo "invalid";
}
另类

if($row_x['xfield']!=$_POST['x1'] AND $row_x['yfield']!=$_POST['y'])
{
   echo "ok";
}
else {
   echo "invalid";
}
另类

if($row_x['xfield']!=$_POST['x1'] AND $row_x['yfield']!=$_POST['y'])
{
   echo "ok";
}
else {
   echo "invalid";
}


echo$row_x['xfield'].='的输出是什么$_POST['x1']
?@lewsterin
可以用作运算符,但是
&&
|
的优先级更高。@Jean语法看起来不错,缺少需要验证的时髦数据,我根本看不到任何明显的错误。@Jean如果输出可以是任何东西,那么错误可以是任何东西,你确定它是
x1
echo$row_x['xfield'].=='的输出是什么$_POST['x1']
?@lewsterin
可以用作运算符,但是
&&
|
的优先级更高。@Jean语法看起来不错,缺少需要验证的时髦数据,我根本看不出任何明显的错误。@Jean如果输出可以是任何东西,那么错误可以是任何你确定它是
x1
?使用问题中的逻辑,如果除非两个条件都满足,它应该下降到
else
子句中。他的陈述是正确的:“当两者不相等时,它必须显示‘无效’”。再次阅读他的代码和他需要的内容。一切都是正确的。您只需重新表述OP已有的相同内容,“当两者不相等时,它必须显示‘无效’,否则为‘确定’”“他说,这意味着要么是OR比较,要么是他的&&比较颠倒了,对吧?*困惑*使用问题中的逻辑,如果除非两个条件都满足,否则它应该下拉到
else
子句中。他的陈述是正确的:“当两者不相等时,它必须显示‘无效’”。再次阅读他的代码和他需要的内容。一切都是正确的。你只是重新表述OP已经拥有的相同内容,“当两者不相等时,它必须显示‘无效’,否则‘ok’”,他说,这意味着一个OR比较或他的&&比较倒置,对吗?*感到困惑*我们不能使用OR作为和的替代品,因为OP想要检查两者。我们不能使用OR作为和的替代品,因为OP想要检查both@hayden现在检查这个。。可以吗,还是我需要详细说明一下more@hayden现在检查这个。。可以吗,还是我需要详细说明一下