將 PHP 物件轉換為關聯陣列
-
使用
array
關鍵字將StdClass
的物件型別轉換為 PHP 中的關聯陣列 -
在使用者定義的類中使用
StdClass
的物件將物件轉換為 PHP 中的關聯陣列 -
在 PHP 中使用
json_encode()
和json_decode()
函式將物件轉換為關聯陣列
我們將介紹一種將 PHP 物件轉換為關聯陣列的方法,使用 array
關鍵字對 StdClass
的物件進行型別轉換。我們將使用 var_dump()
函式來顯示關聯陣列。
第二種方法演示了另一種將 PHP 物件轉換為關聯陣列的方法,該方法在使用者定義的類的建構函式中建立了 StdClass
。我們將使用 array
關鍵字將物件轉換為關聯陣列,就像在第一種方法中一樣。該方法遵循物件導向的方法。
我們還將介紹另一種使用 json_encode()
和 json_decode()
函式在 PHP 中將物件轉換為關聯陣列的方法。我們將使用 StdClass
來建立物件和動態屬性。
使用 array
關鍵字將 StdClass
的物件型別轉換為 PHP 中的關聯陣列
我們可以建立 StdClass
空類以在 PHP 中建立一個物件並使用該物件建立屬性。類的物件可以直接訪問屬性。它還可以為類建立動態屬性。我們可以使用 array
物件將物件型別轉換為陣列。var_dump()
函式轉儲有關陣列型別和值的資訊。
例如,使用 new
運算子建立 StdClass
的物件 $object
。使用名為 car1
和 car2
的 $object
建立兩個屬性。使用值 porsche
和 bugatti
分配屬性。使用 array
關鍵字對 $object
變數進行型別轉換。將 array
關鍵字用括號括在 $object
變數之前,並使用 var_dump()
函式轉儲值。下面的示例將物件轉換為關聯陣列,如輸出部分所示。它顯示了陣列中每個元素的鍵值對。
示例程式碼:
#php 7.x
<?php
$object = new StdClass;
$object->car1 = "porsche";
$object->car2 = "bugatti";
var_dump( (array) $object );
?>
輸出:
array(2) { ["car1"]=> string(7) "porsche" ["car2"]=> string(7) "bugatti" }
在使用者定義的類中使用 StdClass
的物件將物件轉換為 PHP 中的關聯陣列
我們可以在類的建構函式中建立 StdClass
的例項,並使用 array
關鍵字將類的物件轉換為關聯陣列。我們可以建立一個類並定義它的一些屬性。類的建構函式將類的屬性初始化為特定值。我們可以建立 StdClass
的物件,併為其分配類的屬性之一。new
運算子和類一起呼叫建構函式。我們可以在呼叫之前使用 array
關鍵字將類的物件轉換為關聯陣列。
例如,建立一個類 Motorcycle
。使用 private
訪問修飾符建立三個類屬性,分別為 $name
、$color
和 $type
。建立類的建構函式並在建構函式內部初始化屬性的值。為 name
賦值 Husky
,為 color
賦值 white
,併為 type
建立一個 StdClass
的物件。使用 $this
關鍵字來初始化屬性。在類之外,呼叫 Motorcycle
類並在呼叫之前使用 array
關鍵字進行型別轉換。使用 var_dump()
函式轉儲有關型別轉換陣列的資訊。
示例程式碼:
#php 7.x
class Motorcycle{
private $name;
private $color;
private $type;
public function __construct(){
$this->name = "Husky";
$this->color = "white";
$this->type = new StdClass;
}
}
var_dump( (array) new Motorcycle );
輸出:
array(3) { ["Motorcyclename"]=> string(5) "Husky" ["Motorcyclecolor"]=> string(5) "white" ["Motorcycletype"]=> object(stdClass)#2 (0) { } }
在 PHP 中使用 json_encode()
和 json_decode()
函式將物件轉換為關聯陣列
json_encode()
函式將值編碼為 JSON 物件,json_decode()
函式將 JSON 物件轉換為 PHP 物件。json_decode()
函式的第二個引數布林值指示 JSON 物件應該轉換的內容。true
值會將 JSON 物件轉換為關聯陣列,而 false
值會將其轉換為 PHP 物件。
例如,建立 StdClass
的物件並將其分配給 $object
變數。將物件屬性的兩個值命名為 Mustang
和 Manang
,並將它們儲存在 place1
和 place2
變數中。在 $object
變數上使用 json_encode()
函式並將值儲存在 $json
變數中。然後,在 $json
變數上使用 json_decode()
函式,並使用布林值 true
作為第二個引數。將值儲存在 $array
變數中。使用 var_dump()
函式轉儲變數。
在下面的示例中,變數 $object
包含 StdClass
物件。json_ecode()
函式將物件轉換為 JSON 字串。json_decode()
函式將 JSON 字串轉換為關聯陣列。
示例程式碼:
#php 7.x
<?php
$object = new StdClass;
$object->place1 = "Mustang";
$object->place2 = "Manang";
$json= json_encode($object);
$array = json_decode($json, true);
var_dump($array);
?>
輸出:
array(2) { ["place1"]=> string(7) "Mustang" ["place2"]=> string(6) "Manang" }
Subodh is a proactive software engineer, specialized in fintech industry and a writer who loves to express his software development learnings and set of skills through blogs and articles.
LinkedIn