【问题标题】:Why does this return an "Undefined Index" error?为什么这会返回“未定义索引”错误?
【发布时间】:2019-12-08 20:37:53
【问题描述】:

以下代码产生未定义索引错误:

if(isset($_SESSION['sessionName'])); { echo $_SESSION['sessionName']; } 

但这工作得很好:

if(isset($_SESSION['sessionName'])) echo $_SESSION['sessionName']; 

两者都检查是否存在 $_SESSION 设置,然后如果 TRUE 则显示/回显该 $_SESSION 值。 我通常使用花括号,但在第一种情况下看不到或理解错误。 我的 IDE (PHPStorm) 不会抱怨语法,所以我不知道可能是什么问题。

【问题讨论】:

  • 第一行藏着一个忍者;!这将终止 if 语句,无论索引是否存在,都会触发以下回显。
  • 分号结束一个语句,per the manual: "在 C 或 Perl 中,PHP 要求指令在结束时 以分号结束每个语句。PHP 代码块的结束标记自动表示分号;您不需要在 PHP 块的最后一行结束分号。如果存在,该块的结束标记将包括紧随的换行符。”
  • 在重新审视这个问题之后,我注意到有一个投票关闭是一个印刷错误。这不是一个。这是关于在条件语句中引入分号时的行为,OP 想知道为什么会这样。恕我直言,投票应该被删除;不应根据其他人的意见关闭问题。

标签: php session


【解决方案1】:

我将my comment 转换为带有附加信息的答案。

分号结束语句,per the manual“在 C 或 Perl 中,PHP 要求指令在每条语句的末尾以分号结束。结束PHP 代码块的标签自动暗示分号;您不需要在 PHP 块的最后一行结束分号。如果存在,该块的结束标签将包括紧随其后的换行符。"

这里发生的情况是,您向我们展示的第一行会产生错误,因为 isset() 由于分号而被取消/暂停,然后您尝试回显一个不是设置/不为空。

您也可能尚未开始会话;目前未知。

【讨论】:

    猜你喜欢
    • 2016-09-24
    • 2018-07-09
    • 1970-01-01
    • 2013-04-07
    • 1970-01-01
    • 2017-05-22
    • 2013-01-31
    • 1970-01-01
    相关资源
    最近更新 更多