首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将ini文件解析为对象?

如何将ini文件解析为对象?
EN

Stack Overflow用户
提问于 2015-01-29 08:35:22
回答 4查看 3.1K关注 0票数 4

我正在获取ini文件的内容,如下所示

代码语言:javascript
复制
$file = 'config.ini';
if (!file_exists($file)) {
    $file = 'config.sample.ini';
}
$config = parse_ini_file($file, true);

这会产生一个多维数组,但我希望它是一个对象。这在parse_ini_file()中是可能的吗?我将如何做到这一点?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-01-29 08:41:35

您可以使用json_encode()json_decode()来实现这一点:

代码语言:javascript
复制
$file = 'config.ini';
if (!file_exists($file)) {
  $file = 'config.sample.ini';
}
$config = parse_ini_file($file, true);
// convert to data to a json string
$config = json_encode($config);
// convert back from json, the second parameter is by
// default false, which will return an object rather than an
// associative array
$config = json_decode($config);
票数 8
EN

Stack Overflow用户

发布于 2015-01-29 08:39:28

如果要将数组转换为stdClass,只需使用以下命令:

代码语言:javascript
复制
$configObj = (object) parse_ini_file($file, true);
票数 0
EN

Stack Overflow用户

发布于 2015-01-29 09:02:55

  • 可以使用其他两种方法将数组更改为对象。

代码语言:javascript
复制
    function array_to_object($array, &$object)
    {
        foreach ($array as $key => $value)  {
            if (is_array($value)) {
                $object->$key = new stdClass();
                array_to_object($value, $object->$key);
            } else {
                $object->$key = $value;
            }
        }

         return $object;
    }

    function arrayToObject($array)
    {
        $object= new stdClass();
        return array_to_object($array, $object);
    }
  • 示例

代码语言:javascript
复制
    $configArr = array(
        'NAME' => 'stack over flow',
        'AGE'  => 28,
        'SEX'  => 'MALE',
    );
    $configObj = arrayToObject($configArr);
    var_dump($configObj);
  • 输出

代码语言:javascript
复制
    class stdClass#1 (3) {
      public $NAME => string(15) "stack over flow"
      public $AGE  => int(28)
      public $SEX  => string(4) "MALE"
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28210187

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档