如果构造只显示else值 - PHP

时间:2012-09-25 08:23:53

标签: php

以下是我的发言:

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

如果两者不相等,则必须显示“无效”字样。否则,' ok'。但在这种情况下,它会显示“无效”字样。是否有效。

为什么有任何线索?

4 个答案:

答案 0 :(得分:2)

你说'当两个人不相等'时......暗示你要在比较中使用'!='而不是'=='。有关&&:

,请参阅此T / F图表
--------------
| X | && | Y |
--------------
| F | F  | F |
--------------
| F | F  | T |
--------------
| T | F  | F |
--------------
| T | T  | T |
--------------

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

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

必须为TRUE以及

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

但是如果我读了你的问题,你会希望两个语句都显示为'无效'。所以你需要在每个陈述中用'=='代替'!='。

答案 1 :(得分:1)

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

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

您可以通过以下方法检查

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' }


}

如果函数体在true上至少有一个条件,则需要使用||代替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

答案 2 :(得分:1)

AND替换为OR,当至少一个相等时,它会显示ok

答案 3 :(得分: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";
}