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

2022-08-30 12:50:38

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

<?php

    echo "hello";
    echo "world"

?>

可以很容易地看出,代码中缺少分号(),但它仍然有效!;

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


答案 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)

输出:

解析错误:语法错误,文件意外结束,在


答案 2

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


推荐