2016-01-23 30 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你是對的。 –