这是我的代码
if (isset($_POST['error']) && $_POST['error'] != 2 && $_POST['error'] != 1) {
return true;
} else if (isset($_POST['error']) && $_POST['error'] == 2 || $_POST['error'] == 1) {
return false;
} else {
return false;
}
请帮忙。 谢谢。
当你做&&时,它会评估所有条件,直到某些东西是假的。当你这样做 || 时,它将评估所有条件,直到某些事情为真。由于您的第一个条件评估为 false,因此调用了第二个条件,但$_POST['error']
不存在。
您可能想这样做,请注意两个错误周围的括号。
if(
isset($_POST['error']) &&
(
$_POST['error'] == 2 ||
$_POST['error'] == 1
)
)
它也可以更好地重写为。
if(
isset($_POST['error']) &&
in_array($_POST['error'], array(1,2))
)
就像奥格瓦说的:
- &
- &运算符将评估所有条件,直到其中任何一个为假。
- || 运算符将计算所有条件,直到其中任何一个条件为真。
一个解决方案:
if(isset($_POST['error'])) {
if($_POST['error'] != 2 && $_POST['error'] !=1) {
// Do stuff here
return true;
}else if($_POST['error'] == 2 || $_POST['error'] == 1) {
return false;
} else {
return false;
}
}
您应该更改代码,如下所示...始终将比较与 ||在括号中。因为 ||条件检查直到最后一段代码以找出"true"值。通过重新编码为.....&&(... || ...(,执行将从点返回 &&,并且不会执行 ( ...|| ..... ( 部分
if (isset($_POST['error']) && $_POST['error'] != 2 && $_POST['error'] != 1) {
return true;
} else if (isset($_POST['error']) && ($_POST['error'] == 2 || $_POST['error'] == 1)) {
return false;
} else {
return false;
}