2011-03-23 206 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

相關問題