我在PHP破解中有多维映射(集合)$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};
有什么想法我该如何实现搜索和替换算法吗?
没有测试,但我认为这会起作用。
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