-1

我在 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};

任何想法如何实现搜索和替换算法?

4

1 回答 1

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

于 2015-02-26T09:45:04.080 回答