【问题标题】:undefined index error with isset() in place?isset() 的未定义索引错误?
【发布时间】:2014-05-08 09:47:21
【问题描述】:

我是否在此处遗漏了一些我看不到的内容会引发此代码的未定义索引错误?在测试未通过$_POST['sub'] 的functions.php 添加代码时,它会抛出下面的未定义索引错误,但是针对完全相同的POST 变量“sub”的相同isset() 测试在第494 行上方执行了大约12 次没有抛出错误。我错过了什么?

来自 PHP 的错误

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

第 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'];
}

【问题讨论】:

  • 你得先用isset,再看是不是"ritem"
  • @Chitowns24 但他的错误是未定义的索引 sub - 我认为这不是全部代码
  • 是的,我刚刚重新看了一遍我同意
  • @MikeB 这就是它的所有代码,但下面的答案是正确的 - 现在我从上到下查看它,该语句的 ELSE 部分应该已经删除了一段时间。看起来它被留在了那里。
  • 这就是为什么存在行长限制和标准不允许单行控制结构的原因。干净的代码看起来像这样codepad.org/BTGPtnbE

标签: php isset undefined-index


【解决方案1】:

从负责此Undefined index noticeelse 部分中删除echo $_POST['sub']; 并替换为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 部分时,您正在尝试输出 $_POST['sub'] 这实际上是 /em> 未设置(这是此问题的实际根源

【讨论】:

  • 谢谢 - 回顾 ELSE 语句后,应该在较早的版本中删除它,并且有人忽略它并留在其中。删除它解决了问题 - 抱歉,这是一件微不足道的事情,我想我和其他开发人员一样忽略了它
【解决方案2】:

因为其他情况

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
}

【讨论】:

    猜你喜欢
    • 2012-12-04
    • 1970-01-01
    • 2011-12-12
    • 1970-01-01
    • 2014-01-17
    • 2011-02-21
    • 2016-08-17
    • 1970-01-01
    • 2012-05-23
    相关资源
    最近更新 更多