对比了半天还是没发现有什么太大的区别,可能是我没有找到体现出使用call_user_func_array()这个函数的优势的场景。谁知道的告知下。给个介绍的文章链接也行~functionfoo($a,$b){return2*(intval($a)+intval($b));}functionbar($a,$b){return3*foo($a,$b);}echobar(3,2);functionfoo($a,$b){return2*(intval($a)+intval($b));}functionbar(){return3*call_user_func_array('foo',func_get_args());}echobar(3,2);参考一楼大拿给的,的确不错:functionplayVideo($video){echo'哥在用用Video看电影-',$video;}functionplayAudio($artist,$music){echo'哥在用Mp3听',$artist,'的歌-',$music;}functionplay(){$args=func_get_args();$functionName=array_shift($args);call_user_func_array('play'.$functionName,$args);}play('Video','《功夫》');echo'';play('Audio','Jay','《简单爱》');
1 回答
婷婷同学_
TA贡献1844条经验 获得超8个赞
我一般也很少用到这个函数,但是当动态调用类的静态方法时它还是有作用的:classfoo{publicstaticfunctionfunc(){var_dump(func_get_args());}}call_user_func_array(array('foo','func'),array('helloworld'));至于动态调用普通函数时,在这种情况下也是很有作用:functionplayVideo($type,$src){echo'Iwillwatch'.$src;}functionplayAudio($type,$src,$artist){echo'Iwilllistento'.$artist.'\'s'.$src;}functionplay(){$args=func_get_args();call_user_func_array('play'.$args[0],$args);}play('Video','功夫.rmvb');echo"and";play('Audio','简单爱.mp3','Jay');我相信你现在已经明白它的作用了。此外,call_user_func()和call_user_func_array()类似,只不过后者第二个参数传入的是数组而已。
添加回答
举报
0/150
提交
取消