我有两个数组
$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);
但这当然不起作用。 有人可以帮我解决这个问题吗?
答案 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')));