[英]convert all json decoded objects to array in php
这里的解决方案有帮助吗?
function object_to_array($obj) {
if(is_object($obj)) $obj = (array) $obj;
if(is_array($obj)) {
$new = array();
foreach($obj as $key => $val) {
$new[$key] = object_to_array($val);
}
}
else $new = $obj;
return $new;
}
此函数以递归方式创建一个包含除对象之外的任何内容的新数组
对于一个复杂的对象,当类型转换为(数组)时,我在数组键中获得了空字符,这些字符来源于对象的简化。
当var_dumped
,(str)数组键看起来像这样:
arrayKey
(str 9 chars,其中隐藏了null char)实际的字符串:array(NULL CHAR)Key
处理它的最好方法是通过删除空字符(char 0)来进一步清理键。
这种改编有效:
function objectToArray($obj) {
if(is_object($obj)) {
$obj = (array) $obj;
$aobj = array();
foreach ($obj as $key=>$value) {
$aobj[_cleanStr($key)] = $value; //sanitize the str for null chars
}
$obj = $aobj;
}
if(is_array($obj)) {
$new = array();
foreach($obj as $key => $val) {
$new[_cleanStr($key)] = objectToArray($val);
}
}
else $new = $obj;
return $new;
}
//Clean string
function _cleanStr($str) {
$str = str_replace("", "", $str); //remove null chars
return $str;
}
最好为json_decode()函数设置第二个参数TRUE
( 当为TRUE
,返回的objects
将被转换为关联arrays
。 )像这样 -
json_decode($json, TRUE);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.