將多階層JOSN 轉成php 陣列的方式

這幾天剛好在研究facebook api

它們使用的方式就是用json把值回傳給我們,但是呢?大部分的API回傳值都是多階層的JSON不是單階層的

json傳回的型態是obiect所以我們需要把json decode後再將資料轉變成陣列
如果只是單一階層的json object那麼我們只需要使用php官方提供的get_object_vars()函式就可以輕鬆搞定 
但是如果是多階層的就沒有官方的函式可以用了
拜訪google大神後發現有人提供了這樣的函式


function std_class_object_to_array($stdclassobject)
{
    $_array = is_object($stdclassobject) ? get_object_vars($stdclassobject) : $stdclassobject;

    foreach ($_array as $key => $value) {
        $value = (is_array($value) || is_object($value)) ? std_class_object_to_array($value) : $value;
        $array[$key] = $value;
    }

    return $array;
}
// print_r(std_class_object_to_array(json_decode($json_str)));
?>
在文件中先貼上這支function後,std_class_object_to_array()這隻函式就可以幫我們把多階層的object也加入陣列中瞜


是不是很方便阿!


參考資料來源:
PHP 將 Object 轉換成 Array (CLI JSON Reader) | Tsung's Blog

留言

這個網誌中的熱門文章

解決PHP JSON 中文亂碼的問題

讓 PHP 接收 post 的 json 資料

PHPExcel 用PHP匯出成EXCEL