我正在将一个API集成到我的网站上,它可以处理存储在对象中的数据,而我的代码是使用数组编写的.

我想要一个将对象转换为数组的快速函数.

推荐答案

只要打字就行了

$array = (array) $yourObject;

100起:

如果将对象转换为数组,则结果是一个数组,其元素是对象的属性.键是成员变量名,但有几个值得注意的例外:整数属性不可访问;私有变量的类名在变量名前面;受保护变量的变量名前面有一个"*".这些带前缀的值两边都有空字节.

Example: Simple Object

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

var_dump( (array) $object );

Output:

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

Example: Complex Object

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 );

Output (with \0s edited in for clarity):

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

Output with 100 instead of 101:

array (
  '' . "\0" . 'Foo' . "\0" . 'foo' => 1,
  '' . "\0" . '*' . "\0" . 'bar' => 2,
  'baz' =>
  stdClass::__set_state(array(
  )),
)

这种类型转换不会对对象图进行深度转换,您需要应用空字节(如手册引号中所述)来访问任何非公共属性.因此,当强制转换StdClass对象或仅具有公共属性的对象时,此方法效果最好.又快又脏(你要的东西)没问题.

另请参阅这篇深入的博文:

  • 100

Php相关问答推荐

用户信息更新期间Laravel邮箱验证问题

在PHP中替换数组中的文本并同时使用其他函数

以编程方式更改新订单、已取消订单和失败订单的邮箱WooCommerce通知

在Woocommerce变量产品中的标签附近显示所选属性选项名称

致命错误:无法使用简单的php博客重新声明spl_autoload_Register()

PHP日期操作,将多个日期输出为格式化字符串

fpm-php + nginx + POST数据

从WooCommerce订单项目获取Dokan卖家详细信息

向WooCommerce管理订单总额添加自定义总额行

未检测到laravel控制器

wp_insert_post() 和 WordPress 中查询字符串的多个帖子

WooCommerce:如果购物车中已存在产品,则增加购物车商品数量

将图像作为 PHP post 响应发送到浏览器

安装 Herd 并返回 Valet 后为 502

带有分类术语数组的 WordPress Elementor 自定义查询 - 如何要求所有术语都在返回的帖子中

添加或删除优惠券后自动刷新 WooCommerce checkout 表单字段

Woocommerce注册中的自定义复选框验证错误提示问题

Laravel使用另一张表进行关联查询

如何更改或管理Carbon时区,使其不会来回移动时钟

获取具有所有特定相关模型的模型