search — элементы коллекции не могут быть взяты по ссылке в переполнении стека

У меня есть многомерная карта (коллекция) $ данных в 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};

Любые мысли, как я могу реализовать алгоритм поиска и замены?

-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

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]