首頁 後端開發 PHP問題 php怎麼將物件轉為數組

php怎麼將物件轉為數組

Apr 26, 2023 pm 02:26 PM

PHP 是一門非常有用的程式語言,有著強大的物件導向特性。在 PHP 中,我們可以方便地將物件轉換為陣列。本文將介紹 PHP 中物件轉數組的各種方法。

一、使用 get_object_vars() 函數

get_object_vars() 是一個 PHP 內建函數,用來取得物件的所有屬性及其值,並傳回一個陣列。此函數的語法格式如下:

1

array get_object_vars ( object $object )

登入後複製

其中,$object 表示要轉換的物件。

下面的範例程式碼示範如何將一個物件轉換為陣列:

1

2

3

4

5

6

7

8

9

10

11

class MyClass {

   public $name '张三';

   protected $age = 18;

   private $sex '男';

}

 

$myObj new MyClass();

 

$arr = get_object_vars($myObj);

 

print_r($arr);

登入後複製

這裡透過類別MyClass 建立了一個物件$myObj,並使用get_object_vars() 函數將其轉換為陣列$ arr,最後在控制台輸出該陣列。

結果如下所示:

1

2

3

4

Array

(

    [name] => 张三

)

登入後複製

可以看到,由於 $age 和 $sex 屬性的存取權限不同,因此只有 $name 被轉為了陣列。

二、使用 type casting(型別轉換)

除了使用內建函數外,我們還可以使用 PHP 中的型別轉換語法將物件轉換為陣列。類型轉換語法包括將變數前置為要轉換的資料類型的名稱,例如 (array)、(string)、(int) 等。

下面的範例程式碼中,我們使用(array) 將物件轉換為陣列:

1

2

3

4

5

6

7

8

9

class MyClass {

   public $name '张三';

   protected $age = 18;

   private $sex '男';

}

 

$myObj new MyClass();

$arr = (array$myObj;

print_r($arr);

登入後複製

這裡與先前的範例不同的是,在將物件$myObj 轉換為陣列時,我們使用了(array) 類型轉換語法。

運行以上程式碼,將得到與先前所示的陣列相同的輸出結果。

三、使用 json_decode() 函數

除了使用 get_object_vars() 和 type casting,我們也可以使用 json_decode() 函數將物件轉換為陣列或關聯陣列。

json_decode() 函數可將JSON 字串轉換為PHP 陣列或關聯數組,因此如果我們將物件序列化為JSON 字串,然後再使用json_decode() 函數將其反序列化,即可將物件轉換為陣列或關聯數組。

下面的範例程式碼示範了這個過程:

1

2

3

4

5

6

7

8

9

10

11

12

13

class MyClass {

   public $name '张三';

   protected $age = 18;

   private $sex '男';

}

 

$myObj new MyClass();

 

$jsonString = json_encode($myObj);

 

$arr = json_decode($jsonString, true);

 

print_r($arr);

登入後複製

這裡我們透過類別MyClass 建立了一個物件$myObj,並使用json_encode() 函數將其序列化為JSON 字串$ jsonString。接著,我們使用 json_decode() 函數將該字串解碼為關聯數組 $arr。

在 json_decode() 函數中,第二個參數設定為 true,表示解碼後傳回一個關聯陣列而非物件。如果該參數不設置,則傳回的是一個物件而非數組。

運行程式碼,將得到一個與先前範例相同的輸出結果。

總結

在 PHP 中,我們可以使用多種方式將物件轉換為陣列。 get_object_vars() 函數可以方便地將物件的所有屬性及其值轉換為數組,而 type casting 和 json_decode() 函數則可以將物件序列化為字串,然後透過轉換函數將其轉換為陣列。無論使用哪種方式,只要選用了適合當前場景的方法,就能輕鬆地將物件轉換為數組,更好地滿足業務需求。

以上是php怎麼將物件轉為數組的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前 By 尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前 By 尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章標籤

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

PHP數組去重有哪些最佳實踐 PHP數組去重有哪些最佳實踐 Mar 03, 2025 pm 04:41 PM

PHP數組去重有哪些最佳實踐

PHP數組去重可以利用鍵名唯一性嗎 PHP數組去重可以利用鍵名唯一性嗎 Mar 03, 2025 pm 04:51 PM

PHP數組去重可以利用鍵名唯一性嗎

PHP數組去重需要考慮性能損耗嗎 PHP數組去重需要考慮性能損耗嗎 Mar 03, 2025 pm 04:47 PM

PHP數組去重需要考慮性能損耗嗎

最新的PHP編碼標準和最佳實踐是什麼? 最新的PHP編碼標準和最佳實踐是什麼? Mar 10, 2025 pm 06:16 PM

最新的PHP編碼標準和最佳實踐是什麼?

PHP數組去重有哪些優化技巧 PHP數組去重有哪些優化技巧 Mar 03, 2025 pm 04:50 PM

PHP數組去重有哪些優化技巧

如何在PHP中實現消息隊列(RabbitMQ,REDIS)? 如何在PHP中實現消息隊列(RabbitMQ,REDIS)? Mar 10, 2025 pm 06:15 PM

如何在PHP中實現消息隊列(RabbitMQ,REDIS)?

我如何處理PHP擴展和PECL? 我如何處理PHP擴展和PECL? Mar 10, 2025 pm 06:12 PM

我如何處理PHP擴展和PECL?

如何使用反射來分析和操縱PHP代碼? 如何使用反射來分析和操縱PHP代碼? Mar 10, 2025 pm 06:12 PM

如何使用反射來分析和操縱PHP代碼?

See all articles