我有两个数组
$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')
当我使用数组交叉键时
$original_new = array_intersect_key($new, $original);
它会删除我想保留的数组,我想我是这么做的:
$original_new = array_intersect_key($new, $original);
$original_new = array_diff($original_new, $original);
但这当然行不通。有人能帮我解决这个问题吗?
5条答案
按热度按时间63lcw9qa1#
使用一些循环和数组. Check Online。
首先从
$new
数组中创建仅包含列的数组,然后在$original
数组上使用foreach循环,检查结果是否在$new
数组中,如果不在,则将整个子数组存储在数组名$arr
中。xdyibdwo2#
只是为了提供一个不同的观点,
可以使用一些数组函数来获得解
你只需要得到
$new
数组的array_column结果和$original
数组的array_column结果,得到这两个数组的array_diff,最后得到key,试试这个:
djp7away3#
你可以不写自己的代码:
demo
epggiuax4#
你可以使用array_diff_assoc(PHP 4〉= 4.3.0,PHP 5,PHP 7,PHP 8)但是注意比较是严格的(==)
上面代码的结果:
vulvrdjw5#
(PHP 4〉= 4.0.1,PHP 5,PHP 7)array_diff -计算数组的差值
将array 1与一个或多个其他数组进行比较,并返回array 1中的值,这些值在其他任何数组中都不存在。
这将返回