php物件轉陣列的函數

2020-07-16 10:05:47

關於php中想讓物件以陣列的形式存取,這時候就需要使用到get_object_vars()函數了。先來介紹一下這個函數。

官方文件是這樣解釋的:

array get_object_vars ( object $obj )

返回由 obj 指定的物件中定義的屬性組成的關聯陣列。

舉例:

<?php
class Point2D {
  var $x, $y;
  var $label;
  function Point2D($x, $y)
  {
    $this->x = $x;
    $this->y = $y;
  }
  function setLabel($label)
  {
    $this->label = $label;
  }
  function getPoint()
  {
    return array("x" => $this->x,
           "y" => $this->y,
           "label" => $this->label);
  }
}
// "$label" is declared but not defined
$p1 = new Point2D(1.233, 3.445);
print_r(get_object_vars($p1));
$p1->setLabel("point #1");
print_r(get_object_vars($p1));
?>

輸出:

Array
 (
     [x] => 1.233
     [y] => 3.445
     [label] =>
 )
 Array
 (
     [x] => 1.233
     [y] => 3.445
     [label] => point #1
 )

物件轉陣列具體實現:

function objectToArray($obj) {
  //首先判斷是否是物件
  $arr = is_object($obj) ? get_object_vars($obj) : $obj;
  if(is_array($arr)) {
    //這裡相當於遞回了一下,如果子元素還是物件的話繼續向下轉換
    return array_map(__FUNCTION__, $arr);
  }else {
    return $arr;
  }
}

陣列轉物件的具體實現:

function arrayToObject($arr) {
  if(is_array($arr)) {
    return (object)array_map(__FUNCTION__, $arr);
  }else {
    return $arr;
  }
}

更多相關內容請存取PHP中文網:PHP視訊教學

以上就是php物件轉陣列的函數的詳細內容,更多請關注TW511.COM其它相關文章!