<?php
print_r($response->response->docs);
?>
输出如下:
Array
(
[0] => Object
(
[_fields:private] => Array
(
[id]=>9093
[name]=>zahir
)
Object
(
[_fields:private] => Array
(
[id]=>9094
[name]=>hussain
)..
)
)
如何将此对象转换为数组?我想输出以下内容:
Array
(
[0]=>
(
[id]=>9093
[name]=>zahir
)
[1]=>
(
[id]=>9094
[name]=>hussain
)...
)
这可能吗?
一维数组
对于转换一维数组,您可以使用(array)或get_object_vars进行强制转换,这是Benoit在
他的回答。
// Cast to an array
$array = (array) $object;
// get_object_vars
$array = get_object_vars($object);
它们的工作原理略有不同。例如,get_object_vars将返回一个只有公共可访问属性的数组,除非它是从您传递的对象范围内调用的(即在对象的成员函数中)。(array),另一方面,将强制转换为一个数组,数组中所有public, private和protected成员都完好无损,当然,现在都是public。
多维数组
一个有点脏的方法是使用PHP >= 5.2的原生JSON函数来编码为JSON,然后解码回数组。但是,这将不包括私有成员和受保护成员,并且不适用于包含不能用JSON编码的数据的对象(例如二进制数据)。
// The second parameter of json_decode forces parsing into an associative array
$array = json_decode(json_encode($object), true);
或者,下面的函数将从一个对象转换为一个包含私有和受保护成员的数组,从这里获取并修改为使用强制转换:
function objectToArray ($object) {
if(!is_object($object) && !is_array($object))
return $object;
return array_map('objectToArray', (array) $object);
}
一维数组
对于转换一维数组,您可以使用(array)或get_object_vars进行强制转换,这是Benoit在
他的回答。
// Cast to an array
$array = (array) $object;
// get_object_vars
$array = get_object_vars($object);
它们的工作原理略有不同。例如,get_object_vars将返回一个只有公共可访问属性的数组,除非它是从您传递的对象范围内调用的(即在对象的成员函数中)。(array),另一方面,将强制转换为一个数组,数组中所有public, private和protected成员都完好无损,当然,现在都是public。
多维数组
一个有点脏的方法是使用PHP >= 5.2的原生JSON函数来编码为JSON,然后解码回数组。但是,这将不包括私有成员和受保护成员,并且不适用于包含不能用JSON编码的数据的对象(例如二进制数据)。
// The second parameter of json_decode forces parsing into an associative array
$array = json_decode(json_encode($object), true);
或者,下面的函数将从一个对象转换为一个包含私有和受保护成员的数组,从这里获取并修改为使用强制转换:
function objectToArray ($object) {
if(!is_object($object) && !is_array($object))
return $object;
return array_map('objectToArray', (array) $object);
}
//My Function is worked. Hope help full for you :)
$input = [
'1' => (object) [1,2,3],
'2' => (object) [4,5,6,
(object) [6,7,8,
[9, 10, 11,
(object) [12, 13, 14]]]
],
'3' =>[15, 16, (object)[17, 18]]
];
echo "<pre>";
var_dump($input);
var_dump(toAnArray($input));
public function toAnArray(&$input) {
if (is_object($input)) {
$input = get_object_vars($input);
}
foreach ($input as &$item) {
if (is_object($item) || is_array($item)) {
if (is_object($item)) {
$item = get_object_vars($item);
}
self::toAnArray($item);
}
}
}