为什么func_num_args不能成为一个参数?

Mos*_*ses 0 php

请考虑以下示例:

// does not work
foo( func_num_args() );

// works
$args = func_num_args();
foo( $args );
Run Code Online (Sandbox Code Playgroud)

为什么前者失败而后者失败呢?

dec*_*eze 5

注意:

由于此函数取决于当前范围以确定参数详细信息,因此不能将其用作5.3.0之前的版本中的函数参数.如果必须传递此值,则应将结果分配给变量,并且应传递该变量.

http://php.net/func_num_args

换句话说:因为这个函数在内部工作的方式.当运行时在常规函数体内并且它正在计算表达式以用作另一个函数的参数时,运行时处于不同的状态.这在5.3中有所改变.