• 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
    )
    

      

  • 相关阅读:
    SQL Server分页存储过程研究
    sql子查询 嵌套SELECT实用语句
    SQL语句优化
    CSS开发中常用技巧总结
    Html.DropDownList 的用法
    ADOStoredProc动态调用存储过程
    Sql Server 乐观锁和悲观锁理解和应用
    DOM 解析操作知识
    Java 中 Jar 命令的使用
    CDATA 基本知识
  • 原文地址:https://www.cnblogs.com/tdalcn/p/8349910.html
Copyright © 2020-2023  润新知