You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否用PHP parse_ini_file函数解析多个INI文件并合并到单个变量?

把多个同结构INI文件解析到单个变量的解决办法

你原来的代码没达到预期,是因为每次循环都用新解析的INI数据直接覆盖了$whitelists变量,最后这个变量里只会保留最后一个文件的内容。下面给你两种可行的方案:

方案1:合并所有文件的键值对(键不重复时用)

如果所有INI文件里的键都不会重复,或者你希望后面文件的键自动覆盖前面的,就用数组合并的方式:

$whitelists = [];
foreach (glob("./whitelist/*.conf") as $filename) {
    // 解析单个INI文件,加true参数可以解析带分段的INI(比如[xxx]开头的区块)
    $singleIni = parse_ini_file($filename, true);
    // 把当前文件的数据合并到总数组里
    $whitelists = array_merge($whitelists, $singleIni);
}

方案2:按文件名分组存储(键可能重复时用)

要是不同文件里有相同的键,又不想被覆盖,就把每个文件的数据按文件名作为单独的键存起来:

$whitelists = [];
foreach (glob("./whitelist/*.conf") as $filename) {
    // 提取文件名(不带路径)作为分组键
    $fileAlias = basename($filename);
    $whitelists[$fileAlias] = parse_ini_file($filename, true);
}

额外说明

  • 如果你用的INI文件没有分段(就是没有[section]这种区块),可以去掉parse_ini_file的第二个参数true,直接写parse_ini_file($filename)就行。
  • 要是需要递归遍历子文件夹里的INI文件,可以把glob换成glob("./whitelist/**/*.conf", GLOB_BRACE)(PHP 5.3+支持)。

内容的提问来源于stack exchange,提问作者Peter Petky

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 23:01:32