我需要将.ini文件解析为数组,然后更改数组的值并将其导出到相同的.ini文件中.
我设法读取了该文件,但没有找到任何简单的方法来回写它.
有什么建议?
我设法读取了该文件,但没有找到任何简单的方法来回写它.
有什么建议?
示例.ini文件:
1 = 0; 2 = 1372240157; // timestamp.
为了编写.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; }
你可以像这样测试它:
$x = [ 'section1' => [ 'key1' => 'value1','key2' => 'value2','subsection' => [ 'subkey' => 'subvalue','further' => ['a' => 5],'further2' => ['b' => -5]]]]; echo arr2ini($x);
(请注意,短数组语法仅在PHP 5.4之后可用.)