2016-07-10 115 views
0

如何比较这两个数组?
我想要的结果是在一个数组中不可用的元素。例如:返回多维数组的差异

阵列#1

Array 
(
[0] => Array 
    (
     [0] => a 
     [1] => 1 
    ) 

[1] => Array 
    (
     [0] => b 
     [1] => 2 
    ) 

[2] => Array 
    (
     [0] => c 
     [1] => 3 
    ) 
) 

阵列#2

Array 
(
    [0] => Array 
     (
      [0] => a 
      [1] => 1 
     ) 

    [1] => Array 
     (
      [0] => b 
      [1] => 2 
     ) 
) 

结果

Array 
(
    [0] => Array 
     (
      [0] => c 
      [1] => 3 
     ) 
) 
+1

你尝试过什么吗? – Terminus

+0

你看过php手册http://php.net/manual/en/function.in-array.php#refsect1-function.in-array-examples – user4419336

回答

0

集理论这就是致电对称区别

首先,您需要删除任何可能的重复项,然后获取两个数组的个体差异并合并这两个个体差异。

$a = array('John', 'Bob', 'Mary', 'Serena'); 
$b = array('Jim', 'Mary', 'John', 'Bob'); 

// Remove any duplicates 
$a = array_unique($a); 
$b = array_unique($b); 

// Get the individual differences, using array_diff() 
$a_minus_b = array_diff($a, $b); 
$b_minus_a = array_diff($b, $a); 

// Simply merge them together to get the symmetric difference 
$symmetric_difference = array_merge($a_minus_b, $b_minus_a); // produces ['Serena', 'Jim'] 

如果需要,您可能需要对2D阵列进行必要的更改。

我希望这个帮助。

+0

不过你的例子是针对单维数组的。这里显示的是多维的。另外,我并不认为一维数组需要这么多麻烦。你可以简单地使用array_diff()函数,如果它是单维的,哈哈。 :) –

+0

@ObjectManipulator我只是做了一个起点,因为他/她没有输入任何我假设他/她不知道如何开始的代码。这就是为什么我最后表示可能会对多维数组进行更改。我假设他/她不希望有人为他/她编写完整的代码。 –