2016-01-23 22 views
1

对象数组我有一个JSON译码目标(见图):转换所有的JSON解码在PHP

print screen from browser

我想整个对象转换为数组(也小孩对象)。当我做这样的事情时

$parent_object = (array)$parent_object; 

它只转换父对象,子对象仍然是对象。有没有办法一次将所有对象转换为数组,而不是每次都使用(数组)?

回答

1

更好地设置第二个参数TRUEjson_decode()功能(TRUE,回到objects将被转换成关联arrays)这样的 -

json_decode($json, TRUE); 
+0

谢谢!这是最简单的方法! – heavymetal91

1

here的解决方案有帮助吗?

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;  
} 

此功能递归地创建包含除了

+0

感谢回复。有用!但有更简单的方法 - json_decode($ json,TRUE); – heavymetal91

+0

@ heavymetal91啊!当然 –

1

对于复杂的对象,我正在从物体的简化所产生数组键内空字符时型铸作为对象的任何一个新的数组(数组)。

var_dumped,一个(STR)阵列关键是这样的:

arrayKey(STR 9个字符,采用隐藏式内的空字符)的实际字符串:数组(NULL CHAR)主要

的处理它的最好方法是通过删除空字符(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; 
} 
+0

感谢您的回复。有用!但有更简单的方法 - json_decode($ json,TRUE); – heavymetal91

+0

@ heavymetal91你是对的。 –