【发布时间】:2014-07-16 11:06:13
【问题描述】:
假设我的变量中有以下字符串:
$arr['data_|_multilanguage_|_en_|_field'] = 23;
我想将其转换为多维数组,如下所示:
$arr['data']['multilanguage']['en']['field'] = 23;
我做了一个递归函数
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]);
}
}
}
问题是var_dump 表明孩子是参考。有没有更好的办法?
【问题讨论】:
-
顺便说一句,您的函数是迭代的,而不是递归的; ))
标签: php arrays multidimensional-array explode