Php 数组映射在提供多个数组参数时截断原始键

Php 数组映射在提供多个数组参数时截断原始键,php,arrays,Php,Arrays,以下代码: $array = array("key1" => "value1", "key2" => "value2"); print_r(array_map(function($v) {return $v . $v;}, $array)); 预期结果是否: Array ( [key1] => value1value1 [key2] => value2value2 ) 但是,将任意并行数组作为参数添加到数组映射似乎会引发意外行为: $array = a

以下代码:

$array = array("key1" => "value1", "key2" => "value2");
print_r(array_map(function($v) {return $v . $v;}, $array));
预期结果是否:

Array
(
    [key1] => value1value1
    [key2] => value2value2
)
但是,将任意并行数组作为参数添加到数组映射似乎会引发意外行为:

$array = array("key1" => "value1", "key2" => "value2");
$array2 = array(1, 2);
print_r(array_map(function($v, $v2) {return $v . $v;}, $array, $array2));
这导致:

Array
(
    [0] => value1value1
    [1] => value2value2
)
如您所见,数组键已替换为数字索引键。现在我觉得这很烦人,因为我不想丢失$array的密钥。有没有一种简单的方法可以迭代并行数组(不涉及迭代器类或为数组提供相等的键)?一个选项是手动调用
next()
,如下所示:

$array = array("key1" => "value1", "key2" => "value2");
$array2 = array(1, 2);
print_r(array_map(function($v) use ($array2) {
    $v2 = current($array2);
    next($array2);
    return $v . $v;
}, $array));

但是感觉有点脏。

这是有记录的行为(上面一行)

每个解决方案都会感觉脏,但我会使用just and:


对于我的用例,我已经找到了一个不同、更短、更快的解决方案,但您的回答回答了这个问题。@user2180613您可以编辑您的问题或添加您自己的答案,并将您的解决方案共享给未来的查看器。
$array = array("key1" => "value1", "key2" => "value2");
$array2 = array(1, 2);
$final = array_combine(
    array_keys($array),
    array_map(function($v, $v2) {return $v . $v;}, $array, $array2)
);