我搜索了类似的问题,但没有发现任何我想要的。
我有一个大的INI文件,每行都包含基本的键/值对。许多键基本上是存储在 中的"数组"。INI 格式,您将在下面的摘录中看到:
# Excerpt from INI file itself...
CountryFlagsPackage=CountryFlags
bAllowBinds=False
bShowTime=False
Records[0]=14.64
Records[1]=16.33
Records[2]=11.47
Records[3]=13.26
Records[4]=16.64
Records[5]=19.34
我正在使用 parse_ini_string() 将 INI 放入一个数组中,结果如下:
# Excerpt from print_r() after parse_ini_string()
[CountryFlagsPackage] => CountryFlags
[bAllowBinds] => False
[bShowTime] => False
[Records[0]] => 14.64
[Records[1]] => 16.33
[Records[2]] => 11.47
[Records[3]] => 13.26
[Records[4]] => 16.64
[Records[5]] => 19.34
我的问题是:有没有一种优雅的方法将所有这些"记录"条目分组到一个PHP数组中?目前 - 如上所示 - 它们只是单独的数组项。基本上,我正在寻找上面的数组变得多维。
我可以使用array_keys()并查找文本"记录",但这不是很优雅或可重用。
编辑:我想我也可以使用正则表达式来查找末尾带有方括号的任何内容。有什么更好的解决方案吗?
我怀疑是否有本机方法可以做到这一点,所以这是我所做的:
$file = parse_ini_string($ini);
foreach ($file as $key => $value) {
if (preg_match("/('w+)'['d+]/", $key, $matches)) {
// "Array" style key/value
$arrays[$matches[1]][] = $value;
} else {
// Standard key/value pair
$arrays[$key] = $value;
}
}
print_r($arrays);
结果:
Array
(
[CountryFlagsPackage] => CountryFlags
[bAllowBinds] => False
[bShowTime] => False
[Records] => Array
(
[0] => 14.64
[1] => 16.33
[2] => 11.47
[3] => 13.26
[4] => 16.64
[5] => 19.34
)
)