php对象数组转数组_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

)...

)

这可能吗?

实现方法一:ArrayObject

简单版本:

$arrayObject = new ArrayObject($object);

$array = $arrayObject->getArrayCopy();

更新的递归版本:

class RecursiveArrayObject extends ArrayObject

{

function getArrayCopy()

{

$resultArray = parent::getArrayCopy();

foreach($resultArray as $key => $val) {

if (!is_object($val)) {

continue;

}

$o = new RecursiveArrayObject($val);

$resultArray[$key] = $o->getArrayCopy();

}

return $resultArray;

}

}

$arrayObject = new RecursiveArrayObject($object);

$array = $arrayObject->getArrayCopy();

实现方法二:

(1)一维数组

对于转换单维数组,你可以使用(array)或者使用get_object_vars

// Cast to an array

$array = (array) $object;

// get_object_vars

$array = get_object_vars($object);

它们的工作方式略有不同。例如,get_object_vars除非从您传递的对象范围内(即在对象的成员函数中)调用,否则将返回仅具有可公开访问属性的数组。 (array)另一方面,当然,所有公共,私人和受保护的成员都会在阵列上完整地投射到一个数组,尽管现在全部公开。

(2)多维数组

一个有点脏的方法是使用PHP> = 5.2的本机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);

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值