Почему точка с запятой необязательна в последнем утверждении в php?

Я был удивлен, когда я запустил следующий код в своем редакторе:

<?php echo "hello"; echo "world" ?> 

Как вы можете видеть, в коде отсутствует точка с запятой (;), но она по-прежнему работает!

Кто-нибудь знает, как это работает и почему; здесь {0,1}.

    Потому что тег close означает точку с запятой. Подробнее об этом можно прочитать в руководстве по разделению инструкций .

    И цитата оттуда:

    Как и в 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) 

    вывод:

    Ошибка анализа: синтаксическая ошибка, неожиданный конец файла, ожидающий ',' или ';' в

    Поскольку точка с запятой сообщает парсеру, что вы достигли конца этой инструкции. Это позволяет ему знать, что следующий фрагмент текста – новая инструкция. Однако закрывающий тег сообщает, что мы находимся в конце всех инструкций, вам не нужно разбирать что-либо еще. Поскольку мы не разбираемся в чем-либо еще, нам не нужен конец точки с запятой, это подразумевается.

    Это потому, что точка с запятой не является символом для прекращения оператора.

    Это похоже на то, потому что это происходит почти всегда в конце заявления.

    Обратите внимание, что почти всегда … может быть намеком.

    Пытаясь избавиться от асимметрии, мы можем сказать, что это всегда между утверждениями!

    Это приводит непосредственно к реальному значению точки с запятой: оно не завершает утверждения – оно отделяет утверждения .
    Очевидно, что после последнего утверждения нечего отделять.


    (Большинство языков допускают точку с запятой в конце блока в любом случае, чтобы предотвратить связанные тривиальные ошибки. Это можно сделать, отбросив точку с запятой или, более явную, путем вставки команды, которая ничего не делает после точки с запятой.)