• 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://blog.wpjam.com/m/call_user_func-vs-call_user_func_array/
  • 相关阅读:
    Ubuntu 图形界面和终端切换
    docker 启动失败
    Windows 压缩文件到 Linux中解压文件名乱码
    PHP注释标记整理
    docker常用命令
    caffe初体验
    css中的单位
    js动态添加div
    Pycharm 2019 添加 docker 解释器
    常用的方法整理
  • 原文地址:https://www.cnblogs.com/qq1069284034/p/7929881.html
Copyright © 2020-2023  润新知