星期五, 9月 09, 2011

格式化json,php array

  • php array 用print_r或var_dump印php array時
    output都不會自動縮排,全擠在一行
    很難查看陣列的內容
    之前用Zend可以用Zend_Debug::dump($array);
    但純php就一直沒找到方法(懶得找 哈)
    後來發現原來是自己錯怪print_r
    其實本來就有排版,只是空格及斷行不是用php
    所以加個pre tag包起來即可
    echo "<pre>" . print_r($array, true) . "</pre>";
    //output 
    array(2) {
      ["b"]=>
      int(1)
      ["c"]=>
      NULL
    }
    偶然的機會下看到get_object_vars($array) 才發現有早就有這function了
    不過這只能印object,所以得先將array轉object
    怎麼轉...... 一個個轉...
    function arrayToObject($array) {
      if(!is_array($array)) {
          return $array;
      }
    
      $object = new stdClass();
      if (is_array($array) && count($array) > 0) {
         foreach ($array as $name=>$value) {
            $name = strtolower(trim($name));
            if (!empty($name)) {
               $object->$name = arrayToObject($value);
            }
         }
         return $object;
      }else {
          return FALSE;
      }
    }
  • json json也是,只會用JSON.stringify(array)
    全又擠在一起,一個個看實在很沒效率
    目前只有看到這篇"format json" 自行寫程式去轉
Reference PHP - Convert Array to Object with stdClass

沒有留言: