0

次のコードで「警告: func_get_arg(): Argument 1 not passed to function in /t.php(6) : assert code on line 1」が生成されるのはなぜですか?

function func($param0/*, ...*/)
{
    assert('is_string(func_get_arg(0))'); // ok
    assert('is_string(func_get_arg(1))'); // error
}
func("param0", "param1");

コードパッド: http://codepad.org/5G9kMWKJ

4

2 に答える 2

2

私の推測では、は ではなく呼び出しfunc_get_argを参照しているためです。assertfunc

動作するデモvar_dump: http://codepad.org/37uDiSDy

于 2013-09-05T14:31:03.723 に答える
1

assert の PHP のページに関するこの洞察に満ちたコメントによると:

func_get_args() は [アサートで] 慎重に使用し、決して文字列で使用しないでください。...これは、 assert() に渡された文字列が、関数ではなく assert 内で評価されているためです。

于 2014-02-27T06:12:49.740 に答える