Ale*_*tau 6 php arrays ini parsing
我有下一个INI文件:
a.b.c = 1
a.b.d.e = 2
Run Code Online (Sandbox Code Playgroud)
我正在使用parse_ini_file解析此文件.它返回:
array(
'a.b.c' => 1,
'a.b.d.e' => 2
)
Run Code Online (Sandbox Code Playgroud)
但我想创建一个多维数组.我的外出应该是:
array(
'a' => array(
'b' => array(
'c' => 1,
'd' => array(
'e' => 2
)
)
)
)
Run Code Online (Sandbox Code Playgroud)
先感谢您.
这就是我的看法:
<?php
class ParseIniMulti {
public static function parse($filename) {
$ini_arr = parse_ini_file($filename);
if ($ini_arr === FALSE) {
return FALSE;
}
self::fix_ini_multi(&$ini_arr);
return $ini_arr;
}
private static function fix_ini_multi(&$ini_arr) {
foreach ($ini_arr AS $key => &$value) {
if (is_array($value)) {
self::fix_ini_multi($value);
}
if (strpos($key, '.') !== FALSE) {
$key_arr = explode('.', $key);
$last_key = array_pop($key_arr);
$cur_elem = &$ini_arr;
foreach ($key_arr AS $key_step) {
if (!isset($cur_elem[$key_step])) {
$cur_elem[$key_step] = array();
}
$cur_elem = &$cur_elem[$key_step];
}
$cur_elem[$last_key] = $value;
unset($ini_arr[$key]);
}
}
}
}
var_dump(ParseIniMulti::parse('test.ini'));
Run Code Online (Sandbox Code Playgroud)