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现在检查这个。。可以吗,还是我需要详细说明一下