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