ホームページ  >  記事  >  バックエンド開発  >  call_user_func_array パラメータの受け渡しの問題

call_user_func_array パラメータの受け渡しの問題

WBOY
WBOYオリジナル
2016-06-23 13:57:331146ブラウズ

<?phpfunction a() {    $p['asdf'] = '123';    $p['dfd'] = 234;    $p['hj3'] = 'fdg';    call_user_func_array('b', $p);}function b($p) {    $p2 = func_get_args();    var_dump($p2);    var_dump($p);}a();?>

は次の 2 行を出力します:
array(3) { [0]=> string(3) "123" [1]=> int(234) [2]=> fdg " }
string(3) "123"

$p が出力されるときに配列全体ではなく、string(3) "123" だけが出力されるのはなぜですか?マニュアルには次のように書かれています:
mixed call_user_func_array (callable $callback, array $param_arr)
param_arr: インデックス付き配列としてコールバックに渡されるパラメータ
つまり、連想配列が渡されます。


ディスカッションへの返信 (解決策)

コードの場合

call_user_func_array('b', $p)
実際に実行されるのは
b('123', 123, 'fdg') です
関数 bは 3 つのパラメータ

を渡し、関数 b($p) は 1 つの仮パラメータ $p
のみを宣言しているため、関数 var_dump($p);//123

で直接アクセスできます。他の例を見たところ、理解しました。 Lao Xu に感謝します

da6ddc422c41d1e3e99f36f91088d5e7

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。