zoukankan      html  css  js  c++  java
  • 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
    )
    

      

  • 相关阅读:
    redis乐观锁
    redis
    解决创建Redis容器没有conf配置文件
    redis缓存配置
    Docker架构
    Flask获取数据的一些方法
    Nginx正向代理、反向代理与负载均衡
    Sanic
    Dockerfile详解
    Centos7上安装docker
  • 原文地址:https://www.cnblogs.com/tdalcn/p/8349910.html
Copyright © 2011-2022 走看看