PHP 数组到对象

标签 php arrays object

给定以下数组:

$array = array(
    'item_1' => array(
            'item_1_1' => array(
                    'item_1_1_1' => 'Hello',
            ),
            'item_1_2' => 'World',
    ),
    'item_2' => array(),
);

如何将其转换为对象?

Option 1
$obj = (object) $array;

或者

Option 2
$object = json_decode(json_encode($array), FALSE);

还是别的什么?

我想知道两个选项之间的输出差异,并了解创建此转换的最佳实践。

最佳答案

好吧,你正在以某种方式回答你自己的问题,但是如果你想要一个具有像你的数组这样的属性的对象,你必须转换它,这样数组将仍然是一个数组

$obj = (object) $array;

输出:

object(stdClass)#1 (2) {
  ["item_1"]=>
  array(2) {
    ["item_1_1"]=>
    array(1) {
      ["item_1_1_1"]=>
      string(5) "Hello"
    }
    ["item_1_2"]=>
    string(5) "World"
  }
  ["item_2"]=>
  array(0) {
  }
}

如果您使用 json_decode 版本,它也会将数组转换为对象:

object(stdClass)#2 (2) {
  ["item_1"]=>
  object(stdClass)#3 (2) {
    ["item_1_1"]=>
    object(stdClass)#4 (1) {
      ["item_1_1_1"]=>
      string(5) "Hello"
    }
    ["item_1_2"]=>
    string(5) "World"
  }
  ["item_2"]=>
  array(0) {
  }
}

注意:这里只有空数组才是数组。

回答您的问题:最佳实践取决于您的需要。

关于PHP 数组到对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34136772/

相关文章:

php - 如何在 PHP 中使用 google API 计算 google 反向链接

c++ - 如何在 C++ 的 main 中使用 struct 的数组数据成员?

ios - 从 NSMutableArrays 移除对象

java - 实现通用接口(interface)和继承

javascript - 为什么需要使用 Object.create()

javascript - 如何更改 key 号码?

php - 如何根据图像到中心图像​​的距离显示图像?

php - Laravel 查询获取不同值的出现次数

php - SQL查询消息投票

php - 读取/提交具有可变长度字段集的表单,作为数组服务器端读取