当前位置:编程学习 > php >>

php返回对象转换成数组的方法

在PHP中,可以通过多种方式将返回的对象转换为数组,具体取决于你的具体需求和技术栈。以下是几种常见的方法:
方法一:使用typecasting(类型强制转换)
你可以使用typecasting将对象转换为数组。这是最简单的方式,也是最普遍的使用方式1。

$obj = (object) ['foo' => 'bar', 'property' => 1];
$array = (array) $obj;
print_r($array);
方法二:使用get_object_vars()函数
该函数返回一个由对象属性名为键,属性值为值的关联数组1。

$obj = (object) ['foo' => 'bar', 'property' => 1];
$array = get_object_vars($obj);
print_r($array);
方法三:使用serialize()和unserialize()函数转换
若对象较为复杂,或者我们希望将多个对象合并为一个数组,那么我们可以使用serialize()和unserialize()函数轻松实现1。

$obj1 = (object) ['foo' => 'bar', 'property' => 1];
$obj2 = (object) ['abc' => 'def', 'number' => 100];
$str = serialize($obj1) . serialize($obj2);
$array = unserialize($str);
print_r($array);
方法四:使用递归方式
这种转换方法可以在任何情况下将对象转换为数组,包括嵌套在其他对象或数组中时4。


class Student {

    public $name;
    public $age;
    public function __construct($name, $age) {
        $this->name = $name;
        $this->age = $age;
    }
}

class Grade {
    public $name;
    public $students;
    public function __construct($name, $students) {
        $this->name = $name;
        $this->students = $students;
    }
}

$stu1 = new Student('Tom', 18);
$stu2 = new Student('Jerry', 19);
$grade = new Grade('一年级', [$stu1, $stu2]);

function objectToArray($d) {
    if (is_object($d)) {
        $d = get_object_vars($d);
    }
    if (is_array($d)) {
        return array_map(__FUNCTION__, $d);
    } else {
        return $d;
    }
}

$arr = objectToArray($grade);
print_r($arr);
方法五:使用json_decode()和json_encode()函数
将对象编码为JSON格式字符串,使用json_decode()将其解码为数组。这种方法也可以使用嵌套数组和对象4。

$obj = (object) ['foo' => 'bar', 'property' => 1];
$jsonString = json_encode($obj);
$array = json_decode($jsonString, true);
print_r($array);
以上就是在PHP中将返回的对象转换为数组的几种常见方法。你可以根据自己的实际情况选择最适合的方法。
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,