【发布时间】:2011-02-12 17:36:58
【问题描述】:
我看过 PHP 手册。但我不明白早期版本和后期版本的 PHP 在行为上的区别。我不明白这个说法:
由于该函数依赖于当前作用域来确定参数细节,因此在 5.3.0 之前的版本中不能作为函数参数使用。如果必须传递此值,则应将结果分配给一个变量,并传递该变量。
【问题讨论】:
标签: php
我看过 PHP 手册。但我不明白早期版本和后期版本的 PHP 在行为上的区别。我不明白这个说法:
由于该函数依赖于当前作用域来确定参数细节,因此在 5.3.0 之前的版本中不能作为函数参数使用。如果必须传递此值,则应将结果分配给一个变量,并传递该变量。
【问题讨论】:
标签: php
如果您想将其中一个函数的结果传递给另一个函数或方法,在 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内部有更透彻了解的人可以给你一个更完整的答案。
【讨论】:
表示这在5.2中无效:
function foo() {
$array = array_map('strtolower', func_get_args());
}
foo('BAR', 'BAZ');
它将因致命错误而中止:
PHP 致命错误:func_get_args(): 不能用作函数参数
但在 5.3 中,它是有效代码。
【讨论】: