PHP比较两个数组并获得差异

时间:2016-05-27 09:08:06

标签: php arrays multidimensional-array

我有两个数组

$original = array(
array('fruit' => 'appel','color' => 'green'),
array('fruit' => 'Banana','color' => 'Yellow'),
array('fruit' => 'orange','color' => 'orange',)
);

$new = array(
array('fruit' => 'appel'),
array('fruit' => 'orange')
);

现在我要比较两个数组并打印出不同的数组。 在这种情况下,我想保持

array('fruit' => 'Banana','color' => 'Yellow')

当我使用array_intersect_key

$original_new = array_intersect_key($new, $original);

它删除了我想要保留的数组。 我以为我这样做了:

$original_new = array_intersect_key($new, $original);
$original_new = array_diff($original_new, $original);

但这当然不起作用。 有人可以帮我解决这个问题吗?

4 个答案:

答案 0 :(得分:2)

使用一些循环和数组。 Check Online

首先从default数组中仅使用列创建数组,并使用$new数组上的foreach循环,只检查水果是否在$original数组中,如果不是而不是将完整的子数组存储在数组名$new

$arr

答案 1 :(得分:0)

(PHP 4> = 4.0.1,PHP 5,PHP 7) array_diff - 计算数组的差异

将array1与一个或多个其他数组进行比较,并返回array1中任何其他数组中不存在的值。

$a1=array("a"=>"red","b"=>"green","c"=>"blue","d"=>"yellow");
$a2=array("e"=>"red","f"=>"green","g"=>"blue");

$result=array_diff($a1,$a2);
print_r($result);

这将返回

Array ( [d] => yellow )

答案 2 :(得分:0)

只是提供不同的观点,

您可以使用某些数组函数

获取解决方案

你需要得到$new数组的array_column果实和$original数组的相同,得到2个数组的array_diff,最后得到key },

试试这个:

$res = $original[key(array_diff(
       array_column($original,'fruit'), array_column($new,'fruit')))];  

答案 3 :(得分:0)

您无需编写自己的代码即可完成此操作:

$res = array_intersect_key($original, 
            array_diff(array_column($original, 'fruit'), 
                       array_column($new, 'fruit')));

demo