把以下代码转换成多维数组
$ret = [
'version'=>1,
'app.sys.auth.user'=>1,
'app.sys.auth.admin'=>'admin',
'app.menu.article'=>'article',
];
转换多维数组后:
Array
(
[version] => 1
[app] => Array
(
[sys] => Array
(
[auth] => Array
(
[user] => 1
[admin] => admin
)
)
[menu] => Array
(
[article] => article
)
)
)
实现代码:
$strings = [
'version'=>1,
'app.sys.auth.user'=>1,
'app.sys.auth.admin'=>'admin',
'app.menu.article'=>'article',
];
function format($string,$val) {
$arr = explode('.', $string);
$result = null;
// 弹出最后一个元素
for($i = count($arr) - 1; $i >= 0; $i--) {
if($result === null) {
$result = array($arr[$i]=>$val);
} else {
$result = array($arr[$i]=>$result);
}
}
return $result;
}
$result = array();
foreach($strings as $key=>$val) {
$result = array_merge_recursive($result, format($key,$val));
}