案例1:
<?php
echo <<<"FOOBAR"
Hello World!
FOOBAR;
与
案例2:
<?php
echo <<<"FOOBAR"
Hello World!
FOOBAR;
?>
我对heredoc的使用有疑问。 我发现了一些可以使用解释的奇怪行为。
当我尝试案例1时,我没有得到“Hello World!”输出打印。 相反,我看到以下解析错误。
Parse error: syntax error, unexpected end of file, expecting variable (T_VARIABLE) or heredoc end (T_END_HEREDOC) or ${ (T_DOLLAR_OPEN_CURLY_BRACES) or {$ (T_CURLY_OPEN) in C:\xampp\htdocs\test\index.php on line 5
但是,在案例2中,我看到它正确打印了“Hello World!”文本
当我删除案例2中的结束标记并且只是添加额外的行时,也是如此。
有人可以解释这种行为及其发生的原因吗?
答案 0 :(得分:2)
你是对的
检查说明: - 请注意,除了分号(;)之外,具有结束标识符的行必须不包含其他字符,这一点非常重要。这尤其意味着标识符可能没有缩进,并且在分号之前或之后可能没有任何空格或制表符。
认识到结束标识符之前的第一个字符必须是本地操作系统定义的换行符也很重要。这是在UNIX系统上的\ n,包括Mac OS X.结束分隔符后面也必须跟一个换行符。
如果此规则被破坏且结束标识符不是“干净”,则不会将其视为结束标识符,PHP将继续查找。如果在当前文件结束之前未找到正确的结束标识符,则会在最后一行处产生解析错误。
更多检查
http://www.php.net/manual/en/language.types.string.php#language.types.string.syntax.heredoc