我在数组中有两个数据快照,例如:
数组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_ *函数都有类似的行为吗?
答案 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 )