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中将返回的对象转换为数组的几种常见方法。你可以根据自己的实际情况选择最适合的方法。