我看过PHP手册.但我不明白早期版本和更高版本的PHP之间的行为差异.我不明白这句话:
由于此函数取决于当前范围以确定参数详细信息,因此不能将其用作5.3.0之前的版本中的函数参数.如果必须传递此值,则应将结果分配给变量,并且应传递该变量.
Ale*_*ett 11
如果要将其中一个函数的结果传递给另一个函数或方法,则在5.3之前的PHP版本中,必须先将结果赋给变量.
function some_func() {
$args = func_get_args();
some_other_func($args);
}
Run Code Online (Sandbox Code Playgroud)
在PHP 5.3中删除了此限制,您现在可以直接传递结果.
function some_func() {
some_other_func(func_get_args());
}
Run Code Online (Sandbox Code Playgroud)
至于为什么这个限制首先存在,也许对PHP内部有更透彻理解的人可以给你一个更完整的答案.
这意味着在5.2中这是无效的:
function foo() {
$array = array_map('strtolower', func_get_args());
}
foo('BAR', 'BAZ');
Run Code Online (Sandbox Code Playgroud)
它会因致命错误而中止:
PHP致命错误:func_get_args():不能用作函数参数
但是在5.3中,它是有效的代码.