2012-04-12 142 views

回答

7

假設你想創建自己的功能就是這樣,關鍵是要使用func_get_args()

function mumble(){ 
    $args = func_get_args(); 
    foreach ($args as $arg){ 
     ... whatever 
    } 
} 

如果你只是想多個參數傳遞給調用它,無論是「只管去做它」,或者使用call_user_func_array()

$args = array(); 
... append args to $args 
call_user_func_array('array_intersect_key', $args); 
+0

我從來沒有遇到過這個功能,而且我覺得我應該很久以前 - 非常感謝您將它引入我的注意! – Thomas 2014-03-05 20:15:30

-1

array_intersect_key有已經是protoype允許多個輸入:

array array_intersect_key (array $array1 , array $array2 [, array $ ... ]) 

所以我真的沒有看到那裏的問題。

+0

問題是「如何用N個輸入調用它」? – 2012-04-12 17:26:39

+0

array_intersect_key($ array1,$ array2,$ array3,...,$ arrayN); – Claaker 2012-04-12 18:39:44

+0

這個答案並不涉及OP將不會事先知道(編程)多少個參數傳遞給'array_intersect_key()'的知識。你沒有看到這個問題,因爲你誤解了這個問題是關於寫一個可變參數函數的問題。 Downvote,因爲這個答案沒有幫助。 – mickmackusa 2017-04-20 02:00:28

0
call_user_func_array('foo', array('foo', 'bar', 'foo N')); 

function foo($param1, $param2, $paramN) { 
    // TADÁÁÁ 
} 
0

看看func_get_args() method來處理這個;是這樣的:

function my_function() { 
    $numArgs=func_num_args(); 
    if($numArgs>0) { 
     $argList=func_get_args(); 
     for($i=0;$i<$numArgs;$i++) { 
      // Do stuff with the argument here 
      $currentArg=$argList[$i]; 
     } 
    } 
} 
0

請先詢問有關標準功能之前,參考了http://php.net網站,因爲你讓所有的疑問句tions在那裏回答。

http://php.net/manual/en/function.array-intersect-key.php

http://php.net/manual/en/function.func-get-args.php

http://php.net/manual/en/ref.funchand.php

我收到了你的問題,在這裏是一種方式,你可以這樣做:

$arr_of_arr = array($arr1, $arr2, $arr3, ..., $arrn); 

$arr_of_arr = func_get_args(); 

if(count($arr_of_arr) > 1){ 
    for($i = 0; $i < count($arr_of_arr) - 1; $i++){ 
     if(! $i){ 
      $intersec = array_intersect_key($arr_of_arr[0], $arr_of_arr[1]); 
      $i = 2; 
     } 
     else{ 
      $intersec = array_intersect_key($intersec, $arr_of_arr[$i++]); 
     } 
    } 
} 

$intersec現在將包含交集。

+0

請詳細介紹鏈接及其與問題的關係。一個小例子可以提高響應質量。 – 2012-04-12 17:25:43

+0

@pst對不起,這個答案。現在添加代碼。 – vedarthk 2012-04-12 19:25:30

0
function foo() 
{ 
    $numargs = func_num_args(); 
    echo "Number of arguments: $numargs<br />"; 
    $arg_list = func_get_args(); 
    foreach($arg_list as $arg) { 
     if(is_array($arg)) print_r($arg)."<br />"; 
     else echo "<br />".$arg; 
    } 
} 

foo(array(1,2,3), 2, 3); 
相關問題