Php 使用array\u merge\u recursive将数组合并在一起,但只对添加到数组中的新内容执行操作?

Php 使用array\u merge\u recursive将数组合并在一起,但只对添加到数组中的新内容执行操作?,php,arrays,array-merge,Php,Arrays,Array Merge,如果您发现标题有误导性,对不起。我真的想不出这个问题的好标题 我有两个数组,我将它们合并到一个函数中: $arr1['something']['secondary_something'][]="foo1"; $arr1['something']['secondary_something'][]="foo2"; $arr1['something']['secondary_something'][]="foo3"; $arr2['something']['secondary_something']

如果您发现标题有误导性,对不起。我真的想不出这个问题的好标题

我有两个数组,我将它们合并到一个函数中:

$arr1['something']['secondary_something'][]="foo1";
$arr1['something']['secondary_something'][]="foo2";
$arr1['something']['secondary_something'][]="foo3";

$arr2['something']['secondary_something'][]="foo4";
$arr2['something']['secondary_something'][]="foo5";

function something($array_, $array_new) {

$array=array_merge_recursive($array_,$array_new); // to combine/merge both arrays

print_r($array);//debugg

}
现在,该函数只需打印这些内容即可:

Array ( [something] => Array ( [secondary_something] => Array ( [0] => foo1 [1] => foo2 [2] => foo3 [3] => foo4 [4] => foo5 ) ) )
但是我需要处理新的数据,这些数据已经合并到主阵列中。因此,我需要使用$arr2,但只有在它与$arr1合并之后

当我说我需要处理新数据时,var_导出是我需要处理数组的事情之一

如果我只是执行echo var_export$array_new,true;,我明白了:

array ( 'something' => array ( 'secondary_something' => array ( 0 => 'foo4', 1 => 'foo5', ), ), )
当我需要这个时:

array ( 'something' => array ( 'secondary_something' => array ( 3 => 'foo4', 4 => 'foo5', ), ), )
^^请注意数组键是3和4,而不是1和2。因为它已与主阵列$arr1合并

希望你们明白我想做什么

有什么想法吗

谢谢xD

echo var_export(array_intersect($array['something']['secondary_something'], $arr2['something']['secondary_something']), true);

编辑此操作有效,但会丢失数组的多维方面。如果要在var\u导出中保留something和secondary\u something方面,需要编写一个递归函数来逐步遍历整个数组

真的需要数组合并吗?如果您总是添加新元素,并且不需要它来跳过两个数组中相同的元素,则可以手动将它们添加到数组中。手动添加时,您可以使用array_pop和count获取将新项目添加到新阵列所需的信息。也许不是array_pop,因为这会将它从旧数组中移除,但你得到了我所说的,即返回所有数组,就像var_export$array,true那样。是的,这与它是多维数组这一事实有关,我正在处理它