能否在ini文件中指定一个数组,以便使用Zend_Config_Ini进行解析?

32

有没有办法在 ini 文件中指定一维数组。

所以在我的 ini 文件中,我想做如下设置:

someproperty = [某些内容的数组]

我正在使用 Zend_Config_Ini 配置适配器(我倾向于使用 ini 进行基本配置)。

3个回答

39

2
而且,是否可以对多维数组(因此,某些属性值可能是哈希/多维数组)执行此操作? - Akeem
5
今天我遇到了一个问题,如果在ini文件的顶部没有定义[section],则该语法将无法正常工作。 不确定这是否是一个漏洞,但绝对值得注意! - Tom
@Tom:谢谢你指出来,这让我挺烦恼的 - 我肯定认为这是一个bug! - Select0r

7
虽然没有官方文档说明,但下面这种方法也似乎相当可行:

foo[bar] = 5
foo[baz] = 6
hello[world] = 7

1
这对我也有效。你需要执行 $config->get('the_key')->toArray() 来在 PHP 中将其作为数组使用。 - Christof
它不再是未记录的了。parse_ini_file() 的示例中涵盖了具有空索引和字符串索引的数组。请参见:http://us.php.net/manual/en/function.parse-ini-file.php - Mr. Lance E Sloan

6
你可以使用分隔符来创建更多的子部分,它们可以作为另一级对象($config->some->a),或者通过$config->toArray()将其转换为多级数组。
将上述两种技术结合起来创建数组,并使用分隔符,如下所示:
some.a[] = a
some.a[] = b
some.b[] = c

会给您带来期望的结果。
array('some' => array('a' => array(0 => 'a',
                                   1 => 'b'),
                      'b' => array(0 => 'c')
                     ));

2
点语法在PHP的内置parse-ini-file函数中不起作用。方括号语法仅适用于一维数组。 - feeela

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接