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

4
我有一个如下所示的数组:
Array ( [0] => "txt1" [1] => "txt2" [2] => "txt3")
我有另一个相似的数组,但内容不同:
Array ( [0] => on [2] => on)
目的是获取一个最终数组,其中包括第二个数组的键和第一个数组的内容,就像将它们合并一样。
因此,最终结果为:Array ( [0] => "txt1" [2] => "txt3")。最好将键更改为0-1,但这是一个微不足道的问题,让我们专注于一对一地合并它们。
3个回答

11

最简单的方法是使用 array_intersect_key 函数(请参阅 PHP 文档)。它从第一个传递的数组中获取与所有其他传递的数组中存在的键对应的值。

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

$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
)

使用array_values()函数重新索引结果数组。 - soulmerge

2
为什么不使用直接的解决方案?
foreach($arr2 as $k=>$v) {
    $a[$k] = $arr1[$k];
}

我倾向于实现这样的手动解决方案,它们可以正常工作,但你应该始终假定任何本地函数都会更快,并且在未来可能会更加优化,同时你的foreach循环将始终保持相同的速度。 - TravisO
我认为如果某人由于某种原因无法访问文档,则直接实现是可行的方法。当然,内置函数提供更好的性能,但只有当你知道内建函数存在时才能获得这种收益。 - SilentGhost

2

array_combine - 使用一个数组作为键名,另一个数组作为值,创建一个新的数组。


输入数组的大小应该相等。 - SilentGhost

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接