2014-01-07 99 views
2

我使用php命令parse_ini_file加载应用程序的配置。 看看php documentation有一个例子,它看起来像是一个例子,通过使用那些没有引号"的数字值是例外。 所以我用一个init文件这样的:parse_ini_file将数值转换为字符串

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) 
} 
+1

您使用的是哪个版本的PHP? – Blender

+0

@Blender PHP版本5.3.8 –

回答

2

Document ation没有说明有关返回相应类型的选项值的任何信息。事实上,它们应该是通常情况下的字符串。 (但是,如果你愿意,你可以检查这个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; 
    } 
}); 

-check这个fiddle

+0

谢谢:我喜欢你的脚本:它很简单,使工作。 :-) –