Can’t be used as a function parameter

PHPでfunctionの可変長引数をとりたい場合には
func_num_args()

func_get_arg()
を使う。

したらこんなエラーがでてしまった
Can’t be used as a function parameter
なんぞい。

だいたいこんなようなソースだったわけですよ

for ($i = 1; $i < func_num_args(); $i++) {
	$val = trim(func_get_arg($i));
}

どうやらfunc_get_arg(N)はfunctionのパラメータに使用してはいけないらしい。
知らんがな。

まぁ、マニュアル見たらしっかり

この関数は、カレントスコープに依存してパラメータの詳細を決定しますので、 5.3.0 より前のバージョンでは関数パラメータとして使用することができません。もし、この値を渡さなければならない場合、戻り値を変数に割り当て、その変数を渡してください。

ってかいてあったけどね。

知らんがな。

こうなふうに一度変数に入れてから処理してあげればよいらしい。

for ($i = 1; $i < func_num_args(); $i++) {
	$val = func_get_arg($i);
	$val = trim($val);
}

Comments are closed.