我在PHP hack中有多维地图(集合)$ data。我想搜索关键的“道路”并用
替换它的值map{ 'test' => abc};
我的密钥数组为
$keys = ['meta', 'attr', 'road'];
下面是我的地图
$data = Map {'meta' => Map {
'time' => 11.364,
'count' => 3,
'attr' => Map {
'id'=> 7845,
'road' => Map {
'length' => 'km',
'width' => 'm'
}
}
},
'Assets' => [15,78,89]
};
我正在尝试下面的代码但是给我错误:
$keys = ['meta','attr'];
$arr = &$data;
foreach($keys as $key)
{
$arr = &$arr[$key];
}
$arr = map{ 'test' => abc};
有什么想法我如何实现搜索和替换算法?
答案 0 :(得分:1)
未经测试,但我认为这样可行。
function treeSubstitution($multi: Map<string, mixed>): Map<string, mixed> {
$multi->mapWithKey(($k, $v) ==> $k === 'road' ? map { 'test' => 'abc' } : treeSubstitution($v));
}
这种多维地图实际上是一棵树。并且您需要使用树遍历算法来处理它:http://en.wikipedia.org/wiki/Tree_traversal