2014年4月18日 星期五

PHP - call_user_func_array() 與 call_user_func()

今天又重新瞭解了這兩個函數的功能。
之前偶爾在別人的程式碼裡看到,但不求甚解。今天看到這篇文章 PHP-動態調用函數call_user_func()、call_user_func_array(),作者提出了一個很好的應用範例。然後再回頭看 php.net 對 call_user_func_array 的解說 ,更明白其作用。

我稍微重新改寫,程式碼如下:
<?php
$a = array('white', 'black', 'green', 'blue', 'yellow', 'red', 'brown');
$b = array('white', 'black', 'green',         'yellow', 'red');
$c = array(         '',      'green', 'blue', 'yellow', 'red', 'brown');

$arr = array();
$arr[] = $a;
$arr[] = $b;
$arr[] = $c;

$new_arr = call_user_func_array('array_intersect', $arr);
echo "<pre>".print_r($new_arr,1)."</pre>";
/*
結果:
Array
(
    [2] => green
    [4] => yellow
    [5] => red
)
 */
?>

call_user_func_array 第一個參數要輸入的是函數名稱,用單引號括起來,但是名稱後面不加函數必有的圓括號。
上面範例是直接使用 php 內建函數,也可以自訂函數,然後自訂函數裡面看要對該陣列作什麼事。其他範例可以參考官網的 call_user_func_array 
.

沒有留言:

張貼留言