当我在编辑器中运行以下代码时,我感到很惊讶:
<?php
echo "hello";
echo "world"
?>
可以很容易地看到,代码中缺少分号(;
),但它仍然有效!
这是如何工作的,为什么;
在这里是{0,1}?
因为关闭标记意味着分号。您可以在说明书中的"指令分离"部分阅读更多相关内容。
还有一句话:
与C或Perl一样,PHP要求指令在每条语句的末尾以分号结尾PHP代码块的结束标记自动包含分号您不需要在PHP块的最后一行末尾使用分号。如果存在换行符,则块的结束标记将包括紧跟其后的换行符。
一个例子可以证明这一点:
1.脚本末尾缺少分号,但带有结束标记:
<?php
echo "1";
echo "2"
//^ semicolon missing
?>
输出:
12
2.结尾缺少分号但没有结束标记的脚本:
<?php
echo "1";
echo "2"
//^ semicolon missing (closing tag missing)
输出:
分析错误:语法错误,意外的文件结尾,应为","或";"在中
因为分号告诉解析器您已经到达该指令的末尾。它让它知道下一段文本是一条新指令。然而,结束标记告诉它我们已经完成了所有指令,您不需要解析任何其他内容。因为我们不分析任何其他内容,所以我们不需要指令末尾的分号,这是隐含的。
它看起来是这样的,因为它几乎总是出现在语句的末尾。
请注意几乎总是。。。可能是个暗示。
为了消除不对称性,我们可以说总是语句之间!
这直接引出了分号的真正含义:它不终止语句——它分隔语句
显然,在最后一次发言之后,没有什么可分开的。
(无论如何,大多数语言都允许在块的末尾使用分号,以防止相关的琐碎错误。这可以通过丢弃分号来实现,或者更明确地说,通过在分号之后插入一个不执行任何操作的命令来实现。)