將 PHP 物件轉換為關聯陣列

Subodh Poudel 2023年1月30日 2021年7月8日
  1. 使用 array 關鍵字將 StdClass 的物件型別轉換為 PHP 中的關聯陣列
  2. 在使用者定義的類中使用 StdClass 的物件將物件轉換為 PHP 中的關聯陣列
  3. 在 PHP 中使用 json_encode()json_decode() 函式將物件轉換為關聯陣列
將 PHP 物件轉換為關聯陣列

我們將介紹一種將 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。使用名為 car1car2$object 建立兩個屬性。使用值 porschebugatti 分配屬性。使用 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 變數。將物件屬性的兩個值命名為 MustangManang,並將它們儲存在 place1place2 變數中。在 $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 Poudel avatar Subodh Poudel avatar

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

相關文章 - PHP Object