如何获得两个数组之间的差异,比如diff(添加,删除)?

时间:2014-06-19 11:52:38

标签: php arrays comparison

我在数组中有两个数据快照,例如:

数组1:

array{
    'foo' => 'foo_value',
    'bar' => 'bar_value',
    'baz' => 'baz_value'
}

数组2:

array{
    'foo' => 'foo_value_new',
    'bar' => 'bar_value',
    'baz' => 'baz_value',
    'xyz' => 'added_value'
}

我想获得两个数组,一个包含添加的元素,另一个包含已删除的数组:

添加了新数据的数组:

array{
    'foo' => 'foo_value_new',
    'xyz' => 'added_value'
}

包含已删除数据的数组:

array{
    'foo' => 'foo_value',
}

这怎么能在PHP中得到满足? 任何array_ *函数都有类似的行为吗?

1 个答案:

答案 0 :(得分:2)

我认为没有任何内置函数可以返回两个数组尝试一种简单的方法

 $str = array(
    'foo' => 'foo_value',
    'bar' => 'bar_value',
    'baz' => 'baz_value'
);
$str1=array(
    'foo' => 'foo_value_new',
    'bar' => 'bar_value',
    'baz' => 'baz_value',
    'xyz' => 'added_value'
);
$add= array_merge(array_diff($str, $str1), array_diff($str1, $str));
print_r($add);//Array ( [foo] => foo_value_new [xyz] => added_value )

$del = array_diff($str, $str1);
print_r($del); //Array ( [foo] => foo_value )