我在 PHP 中看到了一个奇怪的行为。看下面这个例子:
<?php
if (true)
function my_function(){
echo "here";
}
my_function();
?>
运行此命令会出现错误:
解析错误:第 4 行出现意外的 'my_function'(T_STRING),期望 '('
我发现修复此错误的方法是添加括号:
<?php
if (true) {
function my_function(){
echo "here";
}
}
my_function();
?>
这段代码将会正确执行。
你能解释一下吗?为什么定义一个函数算作多于一个语句?
if(true) function my_function() { echo "here"; }
和if(true) { function my_function() { echo "here"; } }
... 但第一个会抛出语法错误,第二个可以正常工作。 - CD001if($foo) echo "bar"
没问题,但是if($foo) function bar() {}
就不行...我不确定为什么。虽然我以前从未尝试过这样做,但这种行为似乎...不直观。 - CD001