2011-04-07 70 views
28

是否有一個內置的函數來獲取陣列2中不存在的數組1的所有成員?
我知道如何以編程方式完成它,只想知道是否有一個內置函數可以實現相同功能。所以請不要使用代碼示例。array_intersect的對面嗎?

+5

請注意,如果您正在尋找具有類似行爲的功能,您很可能會在該功能的手冊頁中找到它,在「另請參見」一節中,您可以在http:// www中查看此問題.php.net/manual/en/function.array-intersect.php – 2011-04-07 14:05:31

回答

46

這聽起來像是一個工作array_diff

返回包含所有從ARRAY1的 條目不 存在於任何其它數組的數組。

28

和array_diff絕對是明顯的選擇,但它在技術上並不陣列interesect相反。就拿這個例子:

$arr1 = array('rabbit','cat','dog'); 

$arr2 = array('cat','dog','bird'); 

print_r(array_diff($arr1, $arr2)); 

你想要的是與「兔子」,並在其中「鳥」,但你得到的結果是隻兔子,因爲它正在尋找的是第一陣列中而不是第二(而不是相反)。要真正得到的結果你想要,你必須做這樣的事情:

$arr1 = array('rabbit','cat','dog'); 

$arr2 = array('cat','dog','bird'); 

$diff1 = array_diff($arr1, $arr2); 
$diff2 = array_diff($arr2, $arr1); 
print_r(array_merge($diff1, $diff2)); 

注意:此方法僅在用數字鍵數組。

+1

謝謝你這是我正在尋找的,這應該是標記爲解決方案 – artSir 2016-05-06 18:08:20