把字串轉換成多維陣列
阿新 • • 發佈:2019-02-01
把以下程式碼轉換成多維陣列
$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));
}