将由 dot.separated.keys 组成的字符串数组解析为多维数组[重复]

问题描述 投票:0回答:1

我想根据键将一个数组分解为另一个数组。

例如:

[
  {
    "key": "menu.company.footer",
    "content": "this is an example"
  },
  {
    "key": "menu.company.home.foo",
    "content": "bar"
  }
]

会变成:

[
  {
    "menu": 
    {
      "company": 
      {
        "footer": "this is an example"
      }
    }
  },
  {
    "menu": 
    {
      "company": 
      {
        "home": 
        {
          "foo": "bar"
        }
      }
    }
  }
]

这是我所做的:

  1. 通过我的数组完成了
    foreach
  2. 爆炸钥匙
  3. 完成了一次爆炸计数

如何动态创建父/子系统?不知道会有多少级。

php arrays multidimensional-array string-parsing delimited
1个回答
2
投票

这是一个常见的问题,但有一点曲折。 这有效:

foreach($array as $k => $v) {
    $temp  = &$result[$k];
    $path  = explode('.', $v['key']);

    foreach($path as $key) {
        $temp = &$temp[$key];
    }
    $temp = $v['content'];
}
print_r($result);

使用引用

&
允许您每次将
$temp
变量设置为更深的嵌套元素,然后只需添加到
$temp
即可。

  • 循环数组并分解每个
    key
    元素
  • 循环分解的值并使用键创建一个数组,并进行嵌套
  • 最后将多维数组的值设置为
    content
    元素

另请参阅如何编写 getter/setter 以通过键名称访问多级数组?了解可能适用的内容。

© www.soinside.com 2019 - 2024. All rights reserved.