2010-05-30 145 views
4

我想知道如何比較兩個二維數組的值。PHP比較二維數組

第一陣列

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

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

    [2] => Array 
     (
      [0] => c 
     ) 

} 

第二個

Array 2 
(
    [0] => Array 
     (
      [0] => a 
     ) 

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

    [2] => Array 
     (
      [0] => e 
     ) 

} 

我需要讓我的循環比較陣列和檢查匹配的值。在我的例子中,array1 [0] [0] = a匹配array2 [0] [0] = a。如果匹配,php會輸出一些html。

我foreach循環

foreach ($array1 as $arrays){ 
    foreach($arrays as $array){ 
     //need to compare array2 here not sure how to do it. 
    } 
} 
+0

「我需要知道我的循環是否可以比較數組以檢查匹配的值。」 - 好吧,保存你的文件並試試看吧) – miku 2010-05-30 02:44:38

+0

....我沒有任何東西可以嘗試...... :( – FlyingCat 2010-05-30 02:46:13

回答

2
foreach($array1 as $k1 => $arrays) { 
    foreach($arrays as $k2 => $val) { 

     if($array2[$k1][$k2] == $val) { 
      // $array1[$k1][$k2] is equal to $array2[$k1][$k2] 
     } 
    } 
} // end of foreach 

foreach($a as $k => $v)語法做同樣的事情爲foreach($a as $v),但它也使與該值關聯到$k的關鍵。

+1

感謝您的幫助。琥珀 – FlyingCat 2010-05-30 03:07:29

+0

@mattbasta:No ,它不應該。 – Amber 2010-05-30 03:16:27

1

您可以使用array_diff_assoclike所以

if(count(array_diff_assoc($array1,array2) != 0)) 
{ 
    //Arrays are not the same 
}else{ 
    echo 'these following items are differing in throughout the arrays . ' . print_r(array_diff_assoc($array1,array2),true); 
} 

希望這有助於你。

另請注意array_diff_assoc,它返回的數組項與其他數組(包括其索引鍵)發現不同。

+1

應該指出的是這個函數是SLOOOOOWWWWWWW。如果你有小陣列,但是當你添加很多元素時,它的指數變慢了 – mattbasta 2010-05-30 03:06:25

+0

Amber得到了我需要的東西,謝謝你的提示,但是+1 – FlyingCat 2010-05-30 03:07:00

+0

這是一個非常好的點先生 – RobertPitt 2010-05-30 03:07:15