2012-08-24 54 views
0

我有两个数组删除相同的价值观,我想删除这两者之间的相同的值,例如从两个阵列

$array1 = array(1,2,3,4,5,6) 
    $array2 = array(5,6,7,8,9,10) 

将有

$array = array(1,2,3,4,7,8,9,10) 

我试图

$array = array_unique(array_merge($array1, $array2)); 
结果

但很明显,刚刚删除的重复项将匹配值留下,作为单个值。有没有一个快速的方法来做到这一点,或者这将不得不使用一个函数来完成?

对不起,很明显我不明白阵列。这里是底部的实际数组和结果。结果应该是CoffeeGeneral

array(4) { 
    [0]=> 
    NULL 
    [1]=> 
    string(4) "Milk" 
    [3]=> 
    string(6) "Coffee" 
    [6]=> 
    string(8) "Sweetner" 
    } 


    array(4) { 
    [0]=> 
    NULL 
    [1]=> 
    string(8) "Sweetner" 
    [3]=> 
    string(4) "MIlk" 
    [9]=> 
    string(7) "General" 
    } 


    array(4) { 
    [1]=> 
    string(4) "Milk" 
    [2]=> 
    string(6) "Coffee" 
    [6]=> 
    string(4) "MIlk" 
    [7]=> 
    string(7) "General" 
    } 
+0

你可以找到在两个数组中使用常见值([array_intersect](http://www.php.net/manual/en/function.array-intersect.php)),然后从这两个数组中删除这些值 – Uttara

+2

“3”中发生了什么结果数组? – nickb

+0

显然你的期望有问题。结果是正确的,在这两个阵列中只存在'null'和'Sweetner'并且被正确过滤掉。其余的是两个阵列的独特价值。 – deceze

回答

0
只为了好玩

,当你的阵列中只包含字符串和整数值:

$array = array_keys(array_flip($array1) + array_flip($array2));

2

尝试用array_intersect

$intersect = array_intersect($array1, $array2); 
$array  = array_diff(array_merge($array1, $array2), $intersect); 
1

你想两个阵列的区别,其中“差”的意思是“没有其他的阵列中存在价值”的合并:

$array = array_merge(array_diff($array1, $array2), array_diff($array2, $array1));