2012-04-12 114 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); 
相关问题