首页 >后端开发 >php教程 >如何快速将PHP对象转换为关联数组?

如何快速将PHP对象转换为关联数组?

DDD
DDD原创
2024-12-21 19:07:10467浏览

How to Quickly Convert a PHP Object into an Associative Array?

如何快速将 PHP 对象转换为关联数组

在集成操作基于对象的数据的 API 时,经常会出现这样的需求将这些对象转换为数组,以便与使用数组的现有代码保持一致。下面是执行此转换的简洁明了的解决方案:

对对象进行类型转换:

要将对象转换为关联数组,您可以简单地对它进行类型转换,如下所示:

$array = (array) $yourObject;

这种类型转换方法是一种直接且高效的方法。但是,请务必注意,它仅执行浅层转换。

转换数组中的属性可访问性:

将对象类型转换为数组时,适用各种规则财产可及性:

  • 公共财产可直接在数组。
  • 私有属性在变量名称前添加了“foo”。
  • 受保护属性在变量名称前添加了“*foo” .

整数属性转换:

整数属性不可访问,不会出现在转换后的数组中。

示例:转换简单值对象:

$object = new StdClass;
$object->foo = 1;
$object->bar = 2;

var_dump( (array) $object );

输出:

array(2) {
  'foo' => int(1)
  'bar' => int(2)
}

示例:转换具有私有和受保护的复杂对象属性:

class Foo {
    private $foo;
    protected $bar;
    public $baz;

    public function __construct() {
        $this->foo = 1;
        $this->bar = 2;
        $this->baz = new StdClass;
    }
}

var_dump( (array) new Foo );

输出:

array(3) {
  'Foofoo' => int(1)
  '*bar' => int(2)
  'baz' => class stdClass#2 (0) {}
}

如您所见,私有和受保护的属性存在于转换后的数组中,并带有指定的前缀前缀。

深度铸造和非公开属性:

请注意,此类型转换方法不执行深度转换。要访问非公共属性,您可能需要显式应用空字节,如官方 PHP 文档中所述。

有关更深入的信息,请参阅链接的资源:

  • PHP 内置类 stdClass:https://www.php.net/manual/en/class.stdclass.php
  • 快速 PHP 对象到数组转换博客帖子:https://dereuromark.de/2011/02/03/fast-php-object-to-array-conversion/

以上是如何快速将PHP对象转换为关联数组?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn