首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么在php中的最后一个语句中分号是可选的?

为什么在php中的最后一个语句中分号是可选的?
EN

Stack Overflow用户
提问于 2015-03-26 16:38:34
回答 3查看 7.3K关注 0票数 37

当我在编辑器中运行以下代码时,我感到惊讶:

代码语言:javascript
复制
<?php

    echo "hello";
    echo "world"

?>

可以很容易地看到,代码中缺少分号(;),但是它仍然工作!

这是如何工作的,为什么;在这里是{0,1}?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-03-26 16:40:47

因为关闭标记意味着分号。您可以在Instruction separation下的手册中阅读更多有关这方面的内容。

在此引用如下:

与C或Perl一样,PHP需要在每个语句的末尾用分号结束指令。代码块的结束标记自动意味着分号;,您不需要有分号终止PHP块的最后一行。如果有,块的结束标记将包括立即尾随的换行符。

一个证明这一点的例子:

  1. 末尾缺少分号但带有结束标记的脚本:
代码语言:javascript
复制
<?php
    echo "1";
    echo "2"
          //^ semicolon missing
?>

产出:

代码语言:javascript
复制
12
  1. 脚本末尾缺少分号,但没有结束标记:
代码语言:javascript
复制
<?php
    echo "1";
    echo "2"
          //^ semicolon missing (closing tag missing)

产出:

解析错误:语法错误,文件意外结束,期望“,”或“;”在

票数 76
EN

Stack Overflow用户

发布于 2015-03-26 16:40:55

因为分号告诉解析器您已经到达指令的末尾。它让它知道下一个文本是一个新的指令。但是,结束标记告诉它,我们处于所有指令的末尾,您不需要解析任何其他内容。因为我们没有解析任何其他不需要指令分号结束的东西,所以这是隐含的。

票数 16
EN

Stack Overflow用户

发布于 2015-03-26 23:05:21

这是因为分号不是终止语句的符号。

它看起来是这样的,因为它几乎总是发生在语句的末尾。

注意几乎总是..。可能是个暗示。

试图摆脱这种不对称,我们可以说是总是之间的语句!

这直接导致分号的真正含义:它不终止语句-它分隔语句

显然,在最后一次声明之后,没有什么可以分开的。

(大多数语言都允许在块的末尾加上分号,以防止相关的琐碎错误。这可以通过放弃分号来完成,或者更明确地说,可以插入一个在分号之后什么也不做的命令。)

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29284075

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档