未定义的索引,但我不明白为什么
问题描述:
这里是我的代码未定义的索引,但我不明白为什么
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;
}
请帮助。 谢谢。
答
像Augwa说:
- 的& &运营商将评估所有条件,直到它们中的任何一个是假的。
- ||操作员将评估所有条件,直到任何一个条件成立。
A液:
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;
}
}
答
当你& &直到东西是假的,将评估所有条件。当你做||它会评估所有条件,直到某些事情成立。由于您的第一个条件评估为false,因此第二个条件被调用,但$_POST['error']
不存在。
您可能想要这样做,请注意围绕您的两个错误的括号。
if(
isset($_POST['error']) &&
(
$_POST['error'] == 2 ||
$_POST['error'] == 1
)
)
它也可以更好地重写为。
if(
isset($_POST['error']) &&
in_array($_POST['error'], array(1,2))
)
+0
谢谢大家,它解决了这个问题 – phabeon
答
你应该如下修改代码...始终将与您||比较括号内的。因为||条件将检查最后一段代码以找出“真实”值。通过重新编码为..... & &(... || ....),执行将从点& &返回,并且不会执行(.... || .....)部分
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']'不存在。 – Augwa