由於最近都改用物件的方法在寫程式,所以大都也用物件的方法取得變數,但是有時候需要回傳為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)
需注意其中的差異
沒有留言:
張貼留言