开始用json_decode
然后建立一个foreach循环掰开密钥并将其传递到某种递归函数创建的值。
$old_stuff = json_decode($json_string);
$new_stuff = array();
foreach ($old_stuff AS $key => $value)
{
$parts = explode('.', $key);
create_parts($new_stuff, $parts, $value);
}
然后再编写递归函数:
function create_parts(&$new_stuff, $parts, $value)
{
$part = array_shift($parts);
if (!array_key_exists($part, $new_stuff)
{
$new_stuff[$part] = array();
}
if (!empty($parts)
{
create_parts($new_stuff[$part], $parts, $value);
}
else
{
$new_stuff = $value;
}
}
我没有测试此代码,所以不要指望只是削减和过去,但该战略应该工作。注意$ new_stuff是通过引用递归函数传递的。这个非常重要。