ホームページ > バックエンド開発 > PHPチュートリアル > call_user_func_array パラメータの受け渡しに関連する問題

call_user_func_array パラメータの受け渡しに関連する問題

WBOY
リリース: 2016-06-13 11:56:27
オリジナル
976 人が閲覧しました

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

<?php<br />function a() {<br />    $p['asdf'] = '123';<br />    $p['dfd'] = 234;<br />    $p['hj3'] = 'fdg';<br />    call_user_func_array('b', $p);<br />}<br /><br />function b($p) {<br />    $p2 = func_get_args();<br />    var_dump($p2);<br />    var_dump($p);<br />}<br /><br />a();<br />?>
ログイン後にコピー

は次の 2 行を出力します。 ) [2]=> string(3) "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')
つまり 3 つのパラメーターです関数 b

に渡され、関数 b($p) は仮パラメータ $p
を 1 つだけ宣言するため、関数 var_dump($p);//123
で直接アクセスできます。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート