2012-10-16 45 views
7

我想像這樣使用array_diff。下面是我的兩個陣列輸出:PHP的array_diff不工作

列表1個輸出

Array ([0] => 0022806) 

列表2輸出

Array ([0] => 0022806 [1] => 0023199) 

PHP

$diff = array_diff($list_1, $list_2); 

print "DIFF: " . count($diff) ."<br>"; 
print_r($diff); 

的輸出是:

DIFF: 0 
Array () 

任何想法我做錯了什麼?

+2

如果反轉參數會怎樣? '返回包含array1中所有其他數組中沒有的條目的數組。' –

回答

13

在和array_diff()的參數的順序很重要

返回從ARRAY1包含所有條目的陣列中不 存在於任何其他陣列

+0

有沒有更好的方法?我不知道訂單可能是什麼樣的......我只是想獲得兩者之間的差異。 – user1216398

+1

做array_diff()兩種方式,然後array_merge()結果?這會給你一個陣列或其他的項目,但不是在兩個 –

+0

完美,謝謝! – user1216398

0

From the docs的:

返回一個數組,其中包含array1中不是0的所有條目存在於任何其他陣列中。

如果你只是想以檢查它們是否相同,就可以使用$list1 == $list_2

1

documentation,第二陣列的值從第一個中減去。或者,換句話說,從第一個數組開始,然後刪除第二個數組中出現的所有值。這將正確地產生一個空陣列,你看到上面

你可能想玩intersection,這可能會幫助你得到你想要的。

5

試試;

$diff = array_merge(array_diff($list_1, $list_2), array_diff($list_2, $list_1)); 

print "DIFF: " . count($diff) ."<br>"; 
print_r($diff);