PHP 中 call_user_func 函数 和 call_user_func_array 函数的区别

  |   2019年11月3日 |  Wordpress相关 |   评论已关闭 |   40

ad
有需要可以关注公众号:“技术的世界” 分享最新技术教程,解答技术问题,有任何问题在公众号上提问,抽空会尽力解答。 另外想要什么资源,可以回复“资源”或者私信后台,可以获得丰厚的资源包哦

PHP 中 call_user_func 函数 和 call_user_func_array 函数的区别,

PHP 中 call_user_func() 函数 和 call_user_func_array() 函数都是回调函数,在写接口的时候经常会用到,但是他们有什么区别呢?

它们的第一个参数都是被调用的回调函数,call_user_func() 还可以有多个参数,它们都是回调函数的参数,call_user_func_array() 只有两个参数,第二个参数是要被传入回调函数的数组,这个数组得是索引数组

所以它们最大的区别就是:

  • 如果传递一个数组给 call_user_func_array()数组的每个元素的值都会当做一个参数传递给回调函数,数组的 key 回调掉。
  • 如果传递一个数组给 call_user_func()整个数组会当做一个参数传递给回调函数,数字的 key 还会保留住。

比如有个如下的回调函数:

function test_callback(){
	$args	= func_get_args();
	$num	= func_num_args();
	echo $num."个参数:";
	echo "

<pre>";
	print_r($args);
	echo "</pre>
";
}

然后我们分别使用 call_user_func 函数 和 call_user_func_array 函数进行回调:

$args = array (
	'foo'	=> 'bar',
	'hello'	=> 'world',
	0	=> 123
);

call_user_func('test_callback', $args);
call_user_func_array('test_callback', $args);

最后输出结果:

1 个参数:
Array
(
    [0] => Array
        (
            [foo] => bar
            [hello] => world
            [0] => 123
        )
)

3个参数:
Array
(
    [0] => bar
    [1] => world
    [2] => 123
)

本站推荐使用的主机:,国外主机建议使用


转载请注明出处:http://bml8.com/11044.html

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦