在PHP中合并两个数组(键和内容)

在PHP中合并两个数组(键和内容),php,arrays,merge,key,Php,Arrays,Merge,Key,我有一个如下所示的数组 数组([0]=>“txt1”[1]=>“txt2”[2]=>“txt3”) 我有另一个类似的数组,但内容不同: 数组([0]=>on[2]=>on) 目的是得到一个包含第二个键和第一个内容的最终数组,就像合并它们一样 因此,最终的结果是:数组([0]=>“txt1”[2]=>“txt3”)将键更改为0-1会更好,但这是一个小问题,让我们将重点放在将它们一对一地合并上。最简单的方法是使用Array\u intersect\u key()。它从传递的第一个数组中获取与所有其他

我有一个如下所示的数组

数组([0]=>“txt1”[1]=>“txt2”[2]=>“txt3”)

我有另一个类似的数组,但内容不同: 数组([0]=>on[2]=>on)

目的是得到一个包含第二个键和第一个内容的最终数组,就像合并它们一样


因此,最终的结果是:数组([0]=>“txt1”[2]=>“txt3”)将键更改为0-1会更好,但这是一个小问题,让我们将重点放在将它们一对一地合并上。

最简单的方法是使用
Array\u intersect\u key
()。它从传递的第一个数组中获取与所有其他数组中存在的键对应的值

因此,您的示例如下所示:

$a = array(0 => "txt1", 1 => "txt2", 2 => "txt3");
$b = array(0 => 1, 2 => 1);
$c = array_intersect_key($a, $b);
print_r($c);
印刷品:

Array
(
    [0] => txt1
    [2] => txt3
)
-通过使用一个数组作为键,另一个数组作为值来创建数组


为什么不使用简单的解决方案

foreach($arr2 as $k=>$v) {
    $a[$k] = $arr1[$k];
}

使用array_values()重新编制输入数组的结果数组索引应该相等。如果要实现这样的手动解决方案,它们可以正常工作,但您应该始终假设任何本机函数都会更快,将来可能会更优化,同时,您的foreach将始终保持相同的速度。我认为,如果一个人由于某种原因无法访问文档,那么简单的实现是一个不错的选择。当然,内置函数提供了更好的性能,但如果您知道内置函数的存在,您可以从中获益。