对比了半天还是没发现有什么太大的区别,可能是我没有找到体现出使用call_user_func_array()这个函数的优势的场景。
谁知道的告知下。
给个介绍的文章链接也行~
function foo($a,$b){
return 2*(intval($a)+intval($b));
}
function bar($a,$b){
return 3*foo($a,$b);
}
echo bar(3,2);
function foo($a,$b){
return 2*(intval($a)+intval($b));
}
function bar(){
return 3*call_user_func_array('foo', func_get_args());
}
echo bar(3,2);
参考一楼大拿给的,的确不错:
function playVideo($video)
{
echo '哥在用用Video看电影-',$video;
}
function playAudio($artist,$music)
{
echo '哥在用Mp3听',$artist,'的歌-',$music;
}
function play()
{
$args = func_get_args();
$functionName = array_shift($args);
call_user_func_array( 'play'.$functionName, $args );
}
play('Video','《功夫》');
echo '<br>';
play('Audio', 'Jay','《简单爱》');
我一般也很少用到这个函数,但是当动态调用类的静态方法时它还是有作用的:
至于动态调用普通函数时,在这种情况下也是很有作用:
我相信你现在已经明白它的作用了。此外,
call_user_func()
和call_user_func_array()
类似,只不过后者第二个参数传入的是数组而已。