【发布时间】: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 想知道为什么会这样。恕我直言,投票应该被删除;不应根据其他人的意见关闭问题。