99久久国产露脸精品麻豆,欧美日韩精品小说,亚洲免费在线美女视频,国产三级中文字幕,91极品国产情侣高潮对白,国产亚洲一区二区三区不卡片,欧美jizz精品欧美性,久久国产精品久久国产片

php函數 call_user_func() 和 call_user_func_array() 的區別

袁志蒙 4412次瀏覽

摘要: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
)


隨機內容

表情

共0條評論
  • 這篇文章還沒有收到評論,趕緊來搶沙發吧~