我想基于密钥将数组爆炸到另一个数组。
例如:
[
{
"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"
}
}
}
}
]
这就是我所做的:
foreach
我的问题是如何动态创建父/子系统,因为我不知道会有多少级别。
答案 0 :(得分: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
元素另请参阅How to write getter/setter to access multi-level array by key names?了解可能具有适应性的内容。