本文介绍了INI文件在PHP多维数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我的下一个INI文件:
I have the next INI file:
a.b.c = 1 a.b.d.e = 2我使用parse_ini_file解析该文件。并返回:
I am parsing this file using parse_ini_file. And it returns:
array( 'a.b.c' => 1, 'a.b.d.e' => 2 )不过,我想创建一个多维数组。我outout应该是:
But I want to create a multidimensional array. My outout should be:
array( 'a' => array( 'b' => array( 'c' => 1, 'd' => array( 'e' => 2 ) ) ) )感谢您提前。
推荐答案这是我的看法:
<?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'));更多推荐
INI文件在PHP多维数组
发布评论