未定义的索引,但我不明白为什么

  • 本文关键字:明白 索引 未定义 php
  • 更新时间 :
  • 英文 :


这是我的代码

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

最新更新