考虑以下示例:
// does not work
foo( func_num_args() );
// works
$args = func_num_args();
foo( $args );
为什么前者失败而后者失败?
答案 0 :(得分:5)
注意:强>
因为此功能取决于当前范围来确定 参数详细信息,不能用作函数参数 5.3.0之前的版本。如果必须传递此值,则结果 应该分配给变量,并且应该传递该变量。
换句话说:因为这个函数在内部工作的方式。当运行时在常规函数体内并且它正在计算表达式以用作另一个函数的参数时,运行时处于不同的状态。这在5.3中已经改变。