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); } (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
