2011-03-23 105 views
0

我有这个多维数组(称为$值):如何可变数量的参数传递给函数在PHP

Array 
(
    [0] => Array 
     (
      [0] => 5 
      [1] => 2 
      [2] => 5 
      [3] => 6 
     ) 

    [1] => Array 
     (
      [0] => 3 
      [1] => 4 
      [2] => 5 
      [3] => 6 
     ) 

    [2] => Array 
     (
      [0] => 1 
      [1] => 2 
      [2] => 4 
      [3] => 5 
     ) 

    [3] => Array 
     (
      [0] => 9 
      [1] => 5 
      [2] => 3 
      [3] => 2 
     ) 
) 

我要计算这个多维数组的每一个元素(数组)之间的diff使用array_diff PHP函数。我想的第一件事就是到多维数组为单一阵列,这种分裂:

for($cnt = 0; $cnt < count($values); $cnt++){ 
     for($cntB = 0; $cntB < 4; $cntB++){ 
      ${'arr'.$cnt}[] = $values[$cnt][$cntB]; 
     } 
    } 

在此之后,我有几个阵列称为$arr1$arr2,等等。由于阵列$values的维度可能会有所不同(而且它会)我找不到一种方法将所有生成的单个阵列传递给函数array_diff

有什么想法?

在此先感谢。

+0

参考:['func_num_args()'](http://php.net/manual/en/function.func-num-args.php)和['func_get_args()'](HTTP:// PHP。 net/manual/en/function.func-get-args.php) – 2011-03-23 08:06:31

+0

在这种情况下,变量变量('$ {'arr'。$ cnt}')是一个坏主意。 – 2011-03-23 08:11:42

+1

也许我很密集,但我不明白你期望的输出是什么,你能否详细说明一下?如果你只是想在'$ array [0]'中的项目列表中没有任何其他项目(即array_diff),那么请参阅我的答案。 – Matthew 2011-03-23 08:17:53

回答

5

不知道这是否是你想要的,因为我没看过所有这一切,但检查出:

call_user_func_array('array_diff', $values) 

也许这就是你想要的。

+0

这就是我所需要的。谢谢。 – EmCo 2011-03-23 08:24:25

0
function diff() { 
    $args = func_get_args(); 

    // $args how has all the arrays you passed in. 
} 
0

而不是

${'arr'.$cnt}[] = ... 

使用

$arr[$cnt][] = ... 

问题解决了。 :)

没有必要可变变量时,你真正寻找的是一个数组。

+0

我同意,但那不是整个循环只是'$ arr = $ values'的长效手? – Matthew 2011-03-23 08:22:19

+0

@konf现在你提到它了。 :) – deceze 2011-03-23 08:24:07

相关问题