2012年4月17日 星期二

[PHP] 將Object轉成Array

由於最近都改用物件的方法在寫程式,所以大都也用物件的方法取得變數,但是有時候需要回傳為json的資料型態時,PHP必須使用json_encode的函式將array轉成json,這時候就必須將物件的所有資料轉成一個array,就找到了網路上有人這樣做。

function objectToArray($object)
{
    if(is_object($object))
        $array = get_object_vars($object);
    return $array;
}

不過需要注意的地方是:

  • 假如是在object內轉出array則不必注意變數型態(連private都會讀取)
  • 如果是在外部將object轉出array則必須將變數設為public才行,否則無法取得變數

例如:

  • 內部

    class Student{
        public      $name;
        protected   $height;
        private     $weight;
    
        function toArray()
        {
            if(is_object($this)
                 $array = get_object_vars($this);
            return $array;
        }
    }
    
    var_dump($student->toArray());
    // Array('name' => XX, 'height'=> 170, 'weight' => 48)
    
  • 外部

    class Student{
        public      $name;
        protected   $height;
        private     $weight;
    
    
    }
    function objectToArray()
    {
       if(is_object($this)
            $array = get_object_vars($this);
       return $array;
    }
    var_dump(objectToArray($student));
    // Array('name' => XX)
    

需注意其中的差異

沒有留言:

張貼留言