我想根据键将一个数组分解为另一个数组。
例如:
[
{
"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
如何动态创建父/子系统?不知道会有多少级。
这是一个常见的问题,但有一点曲折。 这有效:
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 以通过键名称访问多级数组?了解可能适用的内容。