開始用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是通過引用遞歸函數傳遞的。這個非常重要。