isset()的未定义索引错误到位?

时间:2014-03-28 19:07:25

标签: php isset undefined-index

我在这里错过了一些我没有看到会为此代码抛出未定义索引错误的内容吗?在测试添加代码到functions.php时,$_POST['sub']没有被传递,它会抛出下面的未定义索引错误,但是对于完全相同的POST变量" sub&#34进行相同的isset()测试;在494行以上执行大约12次而不会抛出错误。我错过了什么?

来自PHP的错误

  

注意:未定义的索引:sub in   第494行/home/path/public_html/dtest/includes/functions.php

第494行代码

if (isset($_POST['sub']) && $_POST['sub'] == "ritem") {
    $id = $_POST['ritemid'];
    unset($_SESSION['cart']['items'][$id]);
    header("Location: ".$_SERVER['HTTP_REFERER']."");
    die();
} else {
    echo $_POST['sub'];
}

2 个答案:

答案 0 :(得分:1)

从负责此echo $_POST['sub'];的{​​{1}}部分中删除else,并替换为Undefined index notice声明。

应该是这样的..

echo

那是因为......当<?php if (isset($_POST['sub']) && $_POST['sub']=="ritem") { $id=$_POST['ritemid']; unset ($_SESSION['cart']['items'][$id]); header("Location: ".$_SERVER['HTTP_REFERER']."");die();} else { echo "The subject is not set"; } 失败意味着if未设置时,所以当涉及到$_POST['sub']部分时,您正在尝试输出else 实际未设置(这是此问题的实际来源

答案 1 :(得分:0)

因为其他情况

if (isset($_POST['sub']) && $_POST['sub']=="ritem") {
  $id=$_POST['ritemid'];
  unset ($_SESSION['cart']['items'][$id]);
  header("Location: ".$_SERVER['HTTP_REFERER']."");
  die();
} else if(isset($_POST['sub'])) {
  echo $_POST['sub'];
} else {
  // Do something else here
}