在PHP中合并数组的快速方法只保存在这两种语言中出现的键?

在PHP中合并数组的快速方法只保存在这两种语言中出现的键?,php,arrays,array-merge,Php,Arrays,Array Merge,我需要将多个数组合并在一起,但我只想保留两个(或所有)数组中包含的键 例如 最后我应该只有键1和2。最好将这些值加在一起,但如果只选择其中一个值是可以的,那么这些值就不那么重要了 如何做到这一点而不必遍历所有内容 我不希望一些代码只是循环遍历所有内容,检查所有内容中是否存在,然后构建一个新的数组,我可以编写,这将非常缓慢。我有很多数据要处理,所以我希望有一种有效的方法来处理这些数据。你要找的是一个十字路口,现在已经有了: 要同时合并这些值(我猜您的意思是添加?),请执行以下操作: (注意,这使用

我需要将多个数组合并在一起,但我只想保留两个(或所有)数组中包含的键

例如

最后我应该只有键
1
2
。最好将这些值加在一起,但如果只选择其中一个值是可以的,那么这些值就不那么重要了

如何做到这一点而不必遍历所有内容


我不希望一些代码只是循环遍历所有内容,检查所有内容中是否存在,然后构建一个新的数组,我可以编写,这将非常缓慢。我有很多数据要处理,所以我希望有一种有效的方法来处理这些数据。

你要找的是一个十字路口,现在已经有了:

要同时合并这些值(我猜您的意思是添加?),请执行以下操作:

(注意,这使用PHP5.3匿名函数语法。)


这假设两个数组键都是有序的,但如果它们不是有序的,则会稍微复杂一些。

您要查找的是一个交叉点,并且已经存在:

要同时合并这些值(我猜您的意思是添加?),请执行以下操作:

(注意,这使用PHP5.3匿名函数语法。)

这假设两个数组键都是有序的,但如果它们不是有序的,则会有点复杂

$a1 = array('one'=>2,'two'=>5,'three'=>4);
$a2 = array('one'=>5,'two'=>3);
$a3 = special_merge($a1,$a2);
$a3 = array_keys(array_intersect_key($a1, $a2));
$a3 = array_map(function ($a1, $a2) { return $a1 + $a2; },
                array_intersect_key($a1, $a2),
                array_intersect_key($a2, $a1));