以下代码:
$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));
但是感觉有点脏。