将PHP对象转为数组的方法及实例

3,054 阅读2分钟

PHP object to array

PHP对象到数组的介绍

下面的文章提供了一个关于PHP对象到数组的概要。我们都知道,对象被称为是一个有内存分配的类实例。就数组而言,它是一个数据结构,在一个名称中包含一个或多个相似类型的值。另一方面,关联数组与普通的PHP数组不一样。一个关联数组是由一个字符串索引组成的数组,它存储了与键值相连的项目值,而不是按照线性索引的顺序。

PHP对象到数组的方法

现在,让我们看看将PHP对象转换为数组的不同方法。

方法 1- 在json_decode和json_encode方法的帮助下

在这个方法中,函数json_decode接收JSON编码的字符串并将其变为PHP变量,而json_encode函数则返回一个以json格式编码的特定值的字符串。

语法

$arr = json_decode(json_encode ( $obj ) , true);

方法2--借助于类型转换

类型转换是一种技术,其中一个数据类型的变量变成另一个数据类型。它被认为是一种明确的数据类型转换。借助于PHP中的类型转换规则,它可以将一个PHP对象转换为一个数组。

语法

$arr = (array) $obj;

如何在PHP中把对象转换为数组?

我们都知道,有几种数据格式,如字符串、对象、数组等。在PHP中,也有这样的数据格式。为了得到所需的输出,需要一个关联数组格式的php对象obj结果。

现在,让我们看看如何翻译一个php对象。

代码

<?php
class hospital
{
// elements
. . . .
function __construct( $dis1, $dis2, $dis3)
{
// Use this pointer
. . . .
}
// create class object
. . .
// convert object to array
. . . .
?>

这是一个将对象转换为数组的骨架。

现在让我们看看如何执行这个操作。

  • 为了对字符串进行编码,使用 "object = json_encode($array);"

当对象是var_dump时,所有的项目都会被显示出来。

  • 为了解码成一个对象,一个可用的json字符串将被用来转换,字符串的格式化将被做为一个对象。它将使用obj=json_decode(json_encode(obj = json\_decode(json\_encode(arr))完成。
  • 当对象为var_dump时,所有项目在转换为数组后将被显示。

在这里,需要考虑的一个重要问题是json_decode将一个json字符串转换为一个对象,只是你提供了另一个选项是布尔值,可以是真或假。即使第二个参数被认为是真的,也会得到一个数组。

另外,当使用json编码操作和解码操作时,如果数组很大,数组会被转换为对象,从而占用很多资源。在这种情况下,更好的方法是将数组类型转换为一个使用对象转换的对象。

考虑一下obj=(object)obj = (object) arr; 语法。在这里,对象也将被转换为数组。

根据要求,你可以选择你想要的在PHP中把数组转换为对象的方法。

PHP对象转换成数组的例子

下面提到了不同的例子。

例子#1

使用类型转换方法将一个对象转换为数组的PHP程序。

代码

<?php
class hospital
{
var $el1;
var $el2;
var $el3;
function __construct( $dis1, $dis2, $dis3)
{
$this->item1 = $dis1;
$this->item2 = $dis2;
$this->item3 = $dis3;
}
}
// Creation of object for the class
$dis = new hospital("D", "S", "C") ;
echo "Items before conversion : " ;
var_dump($dis);
// convert object to array
$arr = (array)$dis;
echo "Items after conversion : ";
var_dump($arr);
?>

输出

PHP object to array 1

在这个程序中,创建了一个类医院,里面有三个元素,如el1、el2和el3。然后,声明了一个__construct()函数,它在对象被创建时被执行。一旦这样做了,构造函数就会接受参数,这些参数以后会在使用关键字 "new "创建对象时提供。从程序中可以看出,在表达式var_dump()的第一种情况下,对象被打印出来。但是在表达式的第二种情况下,一个对象被使用类型转换过程铸成了一个数组。

例子#2

使用json编码和json解码将一个对象转换成一个数组的PHP程序。

代码

<?php
class hospital
{
var $el1;
var $el2;
function __construct( $dis1, $dis2 )
{
$this->item1 = $dis1;
$this->item2 = $dis2;
}
}
// Creating object
$dis = new hospital(500, "C");
echo "Items before conversion : " ;
var_dump($dis);
// convert object to array
$arr = json_decode(json_encode($dis), true);
echo "Items after conversion : ";
var_dump($arr);
?>

输出

PHP object to array 2

在这个程序中,也创建了一个类hospital,里面有两个元素,如el1和el2,被创建。然后,声明了一个__construct()函数,它在对象被创建时被执行。一旦这样做了,构造函数就会接受参数,这些参数以后会在使用关键字 "new "创建对象时提供。从程序中可以看出,在表达式var_dump()的第一种情况下,对象被打印出来。但是在表达式的第二种情况下,一个对象被使用类型转换过程铸成一个数组。在这里,方法部分的第一个方法被用来将一个对象转换成一个数组。

结论

一个关联数组是由一个字符串索引组成的数组,它存储了与键值相连的项目值,而不是按照线性索引的顺序。这篇文章看到了PHP对象到数组是如何工作的,实现它的方法,以及不同的例子。