2014-01-07 98 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

謝謝:我喜歡你的腳本:它很簡單,使工作。 :-) –