• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

call_user_func_array传参有关问题

php 搞代码 3年前 (2022-01-24) 14次浏览 已收录 0个评论

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 />?>

会输出下面两行:
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 t本¥文来源gaodai$ma#com搞$代*码*网(搞代gaodaima码o 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


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:call_user_func_array传参有关问题
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址