2012-08-08 98 views
0

我想獲得兩個陣列的區別陣列,但array_diff()不工作我多麼希望。差異兩個數組

我有這樣的事情:

Array ([0] => dog [1] => cat [2] => cow [3] => bird [4] => wolf) 
Array ([0] => dog [1] => cat [2] => cow) 

而且我要得到這個:

Array ([0] => bird [1] => wolf) 

任何想法?

+0

裹和array_diff的'的輸出陣列() ''array_values()'中的鍵重新編號爲0. – 2012-08-08 00:50:42

回答

4

試試這個代碼:

$array1 = array ('dog','cat','cow','bird','wolf'); 
$array2 = array ('dog','cat','cow'); 

$diff = array_values(array_diff($array1,$array2)); 

print_r($diff); 
+0

不幸的是,它不工作,我已經試過了。 我得到: Array([0] => dog [1] => cat [2] => cow [3] => bird [4] =>狼) – fandrejevic 2012-08-08 00:57:11

+0

有趣的是, ,但它不適用於我的數組。也許鑰匙造成了問題? :-k – fandrejevic 2012-08-08 01:00:52

+0

他們不應該,發佈你的代碼不工作,請。 – Oussama 2012-08-08 01:02:32

0
array_values(array_diff($array1, $array2)); 
+0

不幸的是它不工作,我已經試過了。 我得到: 陣列([0] =>狗[1] =>貓[2] =>牛[3] =>鳥[4] =>狼) – fandrejevic 2012-08-08 00:56:14

0

問我看了你的例子中,有兩個問題嚇了一跳您: - 數組可以是相同的密鑰相同的值,所以你要找到只尊重鍵和尊重值? - 陣列只有相同的鍵,但你只想找到參考值?

0

可以避免inbuild功能

$a1 = array ('dog','cat','cow','bird','wolf'); 
$a2 = array ('dog','cat','cow'); 

foreach($a1 as $key=>$value){ 
    if(!in_array($value, $a2)) 
     $s3[] = $value; 
} 

如果u需要副在兩個輸入數組反之亦然差異,然後添加FOLL:

foreach($a2 as $key=>$value){ 
    if(!in_array($value, $a1)) 
     $s3[] = $value; 
}