将数组转换为.ini文件

use*_*190 9 php arrays ini

我需要将一个.ini文件解析成一个数组,然后更改数组的值并将其导出到同一个.ini文件中.我设法读取了该文件,但没有找到任何简单的方法来回写它.有什么建议?

样本.ini文件:

1 = 0;
2 = 1372240157;    // timestamp.
Run Code Online (Sandbox Code Playgroud)

rr-*_*rr- 9

为了将.ini文件写回来,你需要创建自己的函数,因为除了阅读之外,PHP没有提供开箱即用的功能(可以在这里找到:http://php.net/manual/pl/function. parse-ini-file.php).

可能将多维数组封装到.ini-syntax兼容字符串的函数示例可能如下所示:

function arr2ini(array $a, array $parent = array())
{
    $out = '';
    foreach ($a as $k => $v)
    {
        if (is_array($v))
        {
            //subsection case
            //merge all the sections into one array...
            $sec = array_merge((array) $parent, (array) $k);
            //add section information to the output
            $out .= '[' . join('.', $sec) . ']' . PHP_EOL;
            //recursively traverse deeper
            $out .= arr2ini($v, $sec);
        }
        else
        {
            //plain key->value case
            $out .= "$k=$v" . PHP_EOL;
        }
    }
    return $out;
}
Run Code Online (Sandbox Code Playgroud)

你可以像这样测试它:

$x = [
  'section1' => [
    'key1' => 'value1',
    'key2' => 'value2',
    'subsection' => [
      'subkey' => 'subvalue',
      'further' => ['a' => 5],
      'further2' => ['b' => -5]]]];
echo arr2ini($x);
Run Code Online (Sandbox Code Playgroud)

(请注意,短数组语法仅在PHP 5.4以上可用.)

另请注意,它不会保留您问题中的评论.当它是更新文件的软件(而不是人类)时,没有简单的方法来记住它们.


Pie*_*reL -2

使用 php 内部函数怎么样?http://php.net/manual/en/function.parse-ini-file.php

  • 这些函数是解析ini文件或ini格式的字符串,他想要将数组导出到ini文件,这些函数**不做** (3认同)