У меня есть многомерная карта (коллекция) $ данных в PHP взломать. Я хочу найти ключ «дорога» и заменить его значение на
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
Других решений пока нет …