>백엔드 개발 >PHP 튜토리얼 >call_user_func_array传参问题

call_user_func_array传参问题

WBOY
WBOY원래의
2016-06-23 13:57:331177검색

<?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();?>

会输出下面两行:
array(3) { [0]=> string(3) "123" [1]=> int(234) [2]=> string(3) "fdg" }
string(3) "123"

为什么输出$p时不是整个数组,而只是string(3) "123"?我看手册是这么写的:
mixed call_user_func_array ( callable $callback , array $param_arr )
param_arr:The parameters to be passed to the callback, as an indexed array. 
就是说会传递关联数组。


回复讨论(解决方案)

对于你的代码
call_user_func_array('b', $p);
实际执行的是
b('123', 123, 'fdg')
即向函数 b 传递了 3 个参数

而 function b($p) 只声明了一个形参 $p
所以在函数中可以直接访问到他 var_dump($p);//123

刚刚看了其他例子,明白了。感谢老徐

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

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.