我使用php命令parse_ini_file
加载应用程序的配置。
通过使用那些没有引号"
的示例,看看php documentation就是一个例子,看起来是数字值除外。
所以我使用了这样的init文件:
arr[] = 1
arr[] = 2
arr[] = "string"
integer_value = 3
用
解析该文件
$init = parse_ini_file('myConfig.ini',0);
我得到以下结果(var_dump($init);
):
array(2) {
["arr"]=>
array(3) {
[0]=>
string(1) "1"
[1]=>
string(1) "2"
[2]=>
string(6) "string"
}
["integer_value"]=>
string(1) "3"
}
有没有办法将整数值作为整数处理,而不是作为字符串,以获得以下结果:
array(2) {
["arr"]=>
array(3) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
string(6) "string"
}
["integer_value"]=>
int(3)
}
答案 0 :(得分:2)
文档没有说明返回相应类型的选项值。事实上,它们应该是普通情况下的字符串。 (但是,如果您愿意,可以查看implementation)。相反,您可以应用简单的回调,例如,通过array_walk_recursive()
:
$array = ["arr"=>["0", "1", "2"], "integer_value"=>"3", "float_value"=>"-0.5"];
array_walk_recursive($array, function(&$value, $key)
{
if(is_numeric($value))
{
$value = (string)((int)$value)===$value
?(int)$value
:(double)$value;
}
});
- 检查此fiddle。
答案 1 :(得分:1)
有些老了,但这些天来还有谁来>
从PHP 5.6.1开始,还可以将 [参数$ scanner_mode] 指定为INI_SCANNER_TYPED。 在此模式下,将尽可能保留布尔,空和整数类型。字符串值“ true”,“ on”和“ yes”将转换为TRUE。 “ false”,“ off”,“ no”和“ none”被视为FALSE。在键入模式下,“ null”将转换为NULL。另外,如果可能,所有数字字符串都将转换为整数类型。