以下是我的发言:
if($row_x['xfield']==$_POST['x1'] AND $row_x['yfield']==$_POST['y'])
{
echo "ok";
}
else {
echo "invalid";
}
如果两者不相等,则必须显示“无效”字样。否则,' ok'。但在这种情况下,它会显示“无效”字样。是否有效。
为什么有任何线索?
答案 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";
}