Php parse_ini_文件将数值转换为字符串

Php parse_ini_文件将数值转换为字符串,php,string,parsing,numeric,Php,String,Parsing,Numeric,我使用php命令parse_ini_file加载应用程序的配置。 看看php,这里有一个例子,它看起来像是,数字值被排除在外,使用那些没有引号的“。 所以我使用了这样一个init文件: arr[] = 1 arr[] = 2 arr[] = "string" integer_value = 3 使用 $init=parse_ini_文件('myConfig.ini',0); 我得到以下结果(var_dump($init);): 是否有方法将整数值作为整数而不是字符串处理,以获得以下结果: ar

我使用php命令
parse_ini_file
加载应用程序的配置。 看看php,这里有一个例子,它看起来像是,数字值被排除在外,使用那些没有引号的
。 所以我使用了这样一个init文件:

arr[] = 1
arr[] = 2
arr[] = "string"
integer_value = 3
使用
$init=parse_ini_文件('myConfig.ini',0);
我得到以下结果(
var_dump($init);
):

是否有方法将整数值作为整数而不是字符串处理,以获得以下结果:

array(2) {
  ["arr"]=>
  array(3) {
    [0]=>
    int(1)
    [1]=>
    int(2)
    [2]=>
    string(6) "string"
  }
  ["integer_value"]=>
  int(3)
}

文档没有说明返回相应类型的选项值的任何内容。事实上,它们应该是普通情况下的字符串。(但是,如果需要,您可以检查此项)。相反,您可以通过以下方式应用简单回调:


-检查这个。

有点老了,但是对于这些天来这里的其他人来说:

从PHP 5.6.1开始,[参数$scanner\u mode]也可以指定为INI\u scanner\u TYPED。在此模式下,布尔值、空值和整数类型尽可能保留。字符串值“true”、“on”和“yes”被转换为true。“false”、“off”、“no”和“none”被视为false。“null”“在类型化模式下转换为NULL。此外,如果可能,所有数字字符串都将转换为整数类型


来源:

您使用的是什么版本的PHP?@Blender PHP版本5.3.8谢谢:我喜欢您的脚本:它很简单,而且可以完成任务。:-)
array(2) {
  ["arr"]=>
  array(3) {
    [0]=>
    int(1)
    [1]=>
    int(2)
    [2]=>
    string(6) "string"
  }
  ["integer_value"]=>
  int(3)
}
$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;
    }
});