我需要遍历一个类似这样的数组:
$myArray = array(
'key1' => array('subkey' => 'subvalue'),
'key2' => array('subkey' => 'subvalue'),
)
我希望你能够为每个嵌套的关联数组添加一个键值对,该键值对基于外部键,如下所示:
$myNewArray = array(
'key1' => array('subkey' => 'subvalue', 'newkey' => 'only for key1'),
'key2' => array('subkey' => 'subvalue'),
)
理想情况下,我正在寻找类似于以下内容的东西:
$myNewArray = array_map(function($key, $value) {
if ($key == 'key1') {
$value['newkey'] = 'only for key1';
}
return $value;
}, $myArray);
然而,这显然行不通,因为
callback
只给了一个参数而不是两个。我可以这样做:$myNewArray = array_map(function($key, $value) {
if ($key == 'key1') {
$value['newkey'] = 'only for key1';
}
return WHAT??
}, array_keys($myArray), $myArray);
然而,我在这里返回什么呢?它似乎总是构造一个新的数组,即丢弃我的字符串键(
key1
和key2
),而单个数组的array_map()
会保留它们。我可以使用
array_walk()
,但它有一个相当奇怪的API(颠倒的参数顺序,通过引用传递数组等),因此通常情况下,我更喜欢使用array_map()
来实现。它可以吗?