2008-10-22 61 views
12

您還可以如何比較兩個數組($ A和$ B)並將匹配元素從第一個減少到準備下一個循環到數組$ A?如何比較兩個數組並從下一個循環中刪除匹配的元素?

$A = array(1,2,3,4,5,6,7,8); 
$B = array(1,2,3,4); 

$C = array_intersect($A,$B); //equals (1,2,3,4) 
$A = array_diff($A,$B);  //equals (5,6,7,8) 

這是最簡單的方法還是有辦法使用另一個我沒有想到的函數?我的目標是有一個數組,我可以循環,抽出相關內容組(我已經在其他地方定義了這些關係),直到數組返回false。

+0

這可能是我,但我不認爲這個問題是很清楚的。當我讀它時,你只是對array_diff($ A,$ B)感興趣(這看起來很簡單)。或者$ C的計算也是必不可少的? (如果是這樣,你可以使用array_diff($ A,$ C)而不是array_diff($ A,$ B)。) – mweerden 2008-10-22 13:16:16

+0

不,我聲明$ C是$ A和$ B的交集 – kevtrout 2008-10-22 17:58:08

回答

11

你已經明白了。只需使用array_diffarray_intersect。沒有比這更容易。

編輯: 例如:

$arr_1 = array_diff($arr_1, $arr_2); 
$arr_2 = array_diff($arr_2, $arr_1); 

Source

+2

也考慮[array_diff_assoc ](http://www.php.net/manual/en/function.array-diff-assoc.php)如果兩個數組中的值的順序很重要。 – Duncanmoo 2014-04-23 13:21:20

2

array_unique見。如果連接這兩個數組,它會將所有重複數據抽出。

0

嘿,更好的解決方案:array _ uintersect. 這讓我們按照array_intersect比較數組,然後它可以讓您將數據與回調函數進行比較。

0

嘗試將此

$a = array(0=>'a',1=>'x',2=>'c',3=>'y',4=>'w'); 
$b = array(1=>'a',6=>'b',2=>'y',3=>'z'); 
$c = array_intersect($a, $b); 

$result = array_diff($a, $c); 
print_r($result); 
2

親愛的方便,清潔的方式

$clean1 = array_diff($array1, $array2); 
$clean2 = array_diff($array2, $array1); 
$final_output = array_merge($clean1, $clean2); 
相關問題