Let's say I have the following string in my variable:
$arr['data_|_multilanguage_|_en_|_field'] = 23;
I want to transform that into a multidimensional array as follows:
$arr['data']['multilanguage']['en']['field'] = 23;
I did a recursive function
foreach ($arr as $outer_key => $outer_value) {
$parts = explode('_|_', $outer_key);
$reference =& $arr;
$final_key = count($parts) - 1;
foreach ($parts as $key => $part) {
if (!$final_key == $key) {
if (empty($reference[$part])) {
$reference[$part] = array();
}
$reference =& $reference[$part];
} else {
$reference[$part] = $arr[$str];
unset($arr[$outer_key]);
}
}
}
The problem is that the var_dump
shows that the children are reference. Is there a better way?