2016-03-18 61 views
0

我有一個數組Array_intersect對多維數組

Array 
(
    [0] => Array 
      (
       [0] => 20 
       [1] => 36 
       [3] => 42 
      ) 
    [1] => Array 
      (
       [0] => 21 
       [1] => 42 
       [2] => 30 
      ) 
) 

而且我有

Array 
(
    [0] => 24 
    [1] => 42 
    [2] => 26 
    [3] => 12 
) 

我想用array_intersect獲得從每個相同的值的第二個數組的數組陣列。我遇到的麻煩是搞清楚如何正確設置代碼來做到這一點。我希望有這個

Array 
(
    [0] => Array 
      (
       [0] => 42 
      ) 
    [1] => Array 
      (
       [0] => 42 
      ) 
) 

任何人都可以幫助正確的語法或提供一個替代選項?

+0

對於這裏的第二個數組是什麼? – Rizier123

回答

1

要匹配您的示例輸出,您可以簡單地使用foreach循環。在你的例子中,2D數組是$ array1,1D數組是$ array2。

$output = []; 

foreach ($array1 as $array) { 
    $output[] = array_intersect($array, $array2); 
} 

請注意,僅在PHP版本> = 5.4中支持使用[]聲明數組。對於PHP版本< 5.4:

$array1 = array(array(20, 36, 42), array(21, 42, 30)); 
$array2 = array(24, 42, 26, 12); 

$output = array(); 

foreach ($array1 as $array) { 
    $output[] = array_intersect($array, $array2); 
} 
+0

感謝您的答案,但這似乎並不適用於我。 –

+0

你能分享你的輸出或錯誤嗎?下面是來自上面的代碼示例: https://eval.in/538917 如果您不希望保留的鑰匙,而且需要精確匹配你的問題上面的輸出,只添加'array_values'在'array_intersect'之前:https://eval.in/538918 – ShaneOH

+0

我得到一個語法錯誤,意外的'[',我做了一個直接的複製和粘貼,只是改變了我的變量,無法擺脫錯誤。 –