1

这是我的声明:

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

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

为什么有任何线索?

4

4 回答 4

2

你说'当两者不相等'......暗示你想在比较中使用'!='而不是'=='。有关 &&,请参阅此 T/F 图表:

--------------
| X | && | Y |
--------------
| F | F  | F |
--------------
| F | F  | T |
--------------
| T | F  | F |
--------------
| T | T  | T |
--------------

X 语句必须为真且 Y 语句必须为真。在你的例子中

$row_x['xfield']==$_POST['x1']

必须是 TRUE 以及

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

但是,如果我阅读了您的问题,您将希望将两个语句都设为 FALSE 以显示“无效”。因此,您需要在每个语句中将 '==' 替换为 '!='。

于 2012-09-25T08:28:57.233 回答
1

这是因为其中任何一个都不是真的或两者兼而有之

你正在使用 &&/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' }


}

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

与 OR 之间的差异

AND的真值表

  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
于 2012-09-25T08:31:56.057 回答
1

替换ANDOR,它会ok在至少一个相等时显示

于 2012-09-25T08:32:17.460 回答
0
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";
}
于 2012-09-25T08:35:15.127 回答