php中把對(duì)象轉(zhuǎn)換為數(shù)組幾種簡(jiǎn)單巧妙的方法
在PHP中,對(duì)象是一種復(fù)雜的數(shù)據(jù)類型,它可以包含多個(gè)屬性和方法,有時(shí)候我們需要將對(duì)象轉(zhuǎn)換為數(shù)組進(jìn)行操作,比如將對(duì)象存儲(chǔ)到數(shù)據(jù)庫(kù)中,或者將對(duì)象轉(zhuǎn)換為JSON格式等情況,對(duì)象轉(zhuǎn)數(shù)組不能用遞歸實(shí)現(xiàn)轉(zhuǎn)換,本文幾種簡(jiǎn)單巧妙的方法。
方法一:使用強(qiáng)制類型轉(zhuǎn)換
PHP中可以使用強(qiáng)制類型轉(zhuǎn)換(array)將對(duì)象轉(zhuǎn)換為數(shù)組。具體做法是將對(duì)象的屬性作為數(shù)組中的鍵,屬性的值作為數(shù)組的值,然后返回該數(shù)組。
下面是一個(gè)示例代碼,它實(shí)現(xiàn)了將一個(gè)Person對(duì)象轉(zhuǎn)換為數(shù)組的功能:
class Person { public $name; public $age; public $gender; public function __construct($name, $age, $gender) { $this->name = $name; $this->age = $age; $this->gender = $gender; } } $person = new Person('John', 28, 'male'); // 使用強(qiáng)制類型轉(zhuǎn)換將對(duì)象轉(zhuǎn)換為數(shù)組 $array = (array) $person; print_r($array); // 輸出結(jié)果為:Array ( [name] => John [age] => 28 [gender] => male )
可以看到,在上面的例子中,我們使用了強(qiáng)制類型轉(zhuǎn)換將Person對(duì)象轉(zhuǎn)換為數(shù)組。強(qiáng)制類型轉(zhuǎn)換非常方便,但是它有一個(gè)缺點(diǎn),就是它只能將對(duì)象的公共屬性轉(zhuǎn)換為數(shù)組,不能將私有屬性或者受保護(hù)屬性轉(zhuǎn)換為數(shù)組。
方法二:使用get_object_vars函數(shù)
除了強(qiáng)制類型轉(zhuǎn)換,PHP還提供了另一種方法,可以將對(duì)象轉(zhuǎn)換為數(shù)組。這種方法是使用get_object_vars函數(shù)。該函數(shù)接受一個(gè)對(duì)象作為參數(shù),并將對(duì)象的所有屬性轉(zhuǎn)換為一個(gè)數(shù)組返回。
下面是一個(gè)示例代碼,它實(shí)現(xiàn)了將一個(gè)Person對(duì)象轉(zhuǎn)換為數(shù)組的功能:
class Person { public $name; public $age; public $gender; public function __construct($name, $age, $gender) { $this->name = $name; $this->age = $age; $this->gender = $gender; } } $person = new Person('John', 28, 'male'); // 使用get_object_vars函數(shù)將對(duì)象轉(zhuǎn)換為數(shù)組 $array = get_object_vars($person); print_r($array); // 輸出結(jié)果為:Array ( [name] => John [age] => 28 [gender] => male )
和強(qiáng)制類型轉(zhuǎn)換不同,get_object_vars函數(shù)可以將對(duì)象的所有屬性轉(zhuǎn)換為數(shù)組,包括私有屬性和受保護(hù)屬性。
方法三:使用json_decode和json_encode函數(shù)
除了上述兩種方法,我們還可以將對(duì)象先轉(zhuǎn)換為JSON格式,再將JSON格式轉(zhuǎn)換為數(shù)組。這種方法需要使用到j(luò)son_decode和json_encode函數(shù)。
下面是一個(gè)示例代碼,它實(shí)現(xiàn)了將一個(gè)Person對(duì)象轉(zhuǎn)換為數(shù)組的功能:
class Person { public $name; public $age; public $gender; public function __construct($name, $age, $gender) { $this->name = $name; $this->age = $age; $this->gender = $gender; } } $person = new Person('John', 28, 'male'); // 將對(duì)象轉(zhuǎn)換為JSON格式 $json = json_encode($person); // 將JSON格式轉(zhuǎn)換為數(shù)組 $array = json_decode($json, true); print_r($array); // 輸出結(jié)果為:Array ( [name] => John [age] => 28 [gender] => male )
通過(guò)使用json_decode和json_encode函數(shù),我們可以簡(jiǎn)單地將對(duì)象轉(zhuǎn)換為數(shù)組。
總結(jié)
在PHP中,將對(duì)象轉(zhuǎn)換為數(shù)組的方法有很多種。我們可以使用強(qiáng)制類型轉(zhuǎn)換、get_object_vars函數(shù)、json_decode和json_encode函數(shù)等方法。不同的方法有不同的適用場(chǎng)景,我們可以根據(jù)實(shí)際需求選擇合適的方法。在使用強(qiáng)制類型轉(zhuǎn)換的時(shí)候,需要注意只能將公共屬性轉(zhuǎn)換為數(shù)組;在使用get_object_vars函數(shù)的時(shí)候,可以將所有屬性轉(zhuǎn)換為數(shù)組;在使用json_decode和json_encode函數(shù)的時(shí)候,需要注意JSON格式的轉(zhuǎn)換。
到此這篇關(guān)于php中把對(duì)象轉(zhuǎn)換為數(shù)組幾種簡(jiǎn)單巧妙的方法的文章就介紹到這了,更多相關(guān)php對(duì)象轉(zhuǎn)數(shù)組簡(jiǎn)單方法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- php對(duì)象和數(shù)組相互轉(zhuǎn)換的方法
- PHP中把對(duì)象數(shù)組轉(zhuǎn)換成普通數(shù)組的方法
- php簡(jiǎn)單對(duì)象與數(shù)組的轉(zhuǎn)換函數(shù)代碼(php多層數(shù)組和對(duì)象的轉(zhuǎn)換)
- 解析PHP將對(duì)象轉(zhuǎn)換成數(shù)組的方法(兼容多維數(shù)組類型)
- php中顯示數(shù)組與對(duì)象的實(shí)現(xiàn)代碼
- php中如何使對(duì)象可以像數(shù)組一樣進(jìn)行foreach循環(huán)
- PHP對(duì)象轉(zhuǎn)換為數(shù)組函數(shù)(遞歸方法)
相關(guān)文章
Laravel中使用FormRequest進(jìn)行表單驗(yàn)證方法及問(wèn)題匯總
Laravel 5.0 帶來(lái)了FormRequests, 這是一種特殊的類型, 用于在提交表單時(shí)進(jìn)行數(shù)據(jù)的檢查和驗(yàn)證. 每個(gè)FormRequest類至少包含一個(gè)rules()方法, 這個(gè)方法返回一組驗(yàn)證規(guī)則. 除此之外還必須包含一個(gè)authorize()方法, 該方法返回一個(gè)布爾值, 代表是否允許用戶執(zhí)行本次請(qǐng)求.2016-06-06關(guān)于使用key/value數(shù)據(jù)庫(kù)redis和TTSERVER的心得體會(huì)
本篇文章是對(duì)使用key/value數(shù)據(jù)庫(kù)redis和TTSERVER的心得體會(huì)進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06php頁(yè)面消耗內(nèi)存過(guò)大的處理辦法
是因?yàn)閜hp頁(yè)面消耗的最大內(nèi)存默認(rèn)是為 8M (在PHP的ini件里可以看到) ,如果文件太大 或圖片太大 在讀取的時(shí)候 會(huì)發(fā)生錯(cuò)誤。2013-03-03php實(shí)現(xiàn)異步數(shù)據(jù)調(diào)用的方法
這篇文章主要介紹了php實(shí)現(xiàn)異步數(shù)據(jù)調(diào)用的方法,分享了4種PHP異步執(zhí)行的常用方式,感興趣的小伙伴們可以參考一下2015-12-12淺析application/x-www-form-urlencoded和multipart/form-data的區(qū)別
我們知道在通過(guò)POST方式向服務(wù)器發(fā)送AJAX請(qǐng)求時(shí)最好要通過(guò)設(shè)置請(qǐng)求頭來(lái)指定為application/x-www-form-urlencoded編碼類型。知道通過(guò)表單上傳文件時(shí)必須指定編碼類型為"multipart/form-data"。那么為什么要這么設(shè)置呢2014-06-06php輸出echo、print、print_r、printf、sprintf、var_dump的區(qū)別比較
本篇文章是對(duì)php輸出echo、print、print_r、printf、sprintf、var_dump的區(qū)別進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06windows下開(kāi)發(fā)并編譯PHP擴(kuò)展的方法
開(kāi)發(fā)PHP擴(kuò)展對(duì)于普通程序員來(lái)講可能一直是一件很神秘的工作,其實(shí),只要你對(duì)C語(yǔ)言熟悉,了解了開(kāi)發(fā)PHP擴(kuò)展的步驟和規(guī)則,開(kāi)發(fā)PHP擴(kuò)展也是一件很普通的工作。2011-03-03學(xué)習(xí)php設(shè)計(jì)模式 php實(shí)現(xiàn)狀態(tài)模式
這篇文章主要介紹了php設(shè)計(jì)模式中的狀態(tài)模式,使用php實(shí)現(xiàn)狀態(tài)模式,感興趣的小伙伴們可以參考一下2015-12-12PHP 訪問(wèn)數(shù)據(jù)庫(kù)配置通用方法(json)
目的是通過(guò)通用類訪問(wèn)配置文件的方式,提供對(duì)數(shù)據(jù)庫(kù)連接的動(dòng)態(tài)獲取和設(shè)置,使開(kāi)發(fā)時(shí)和生產(chǎn)應(yīng)用時(shí)都能夠提供靈活的、簡(jiǎn)化的、解耦的操作方式,需要的朋友可以參考下2018-05-05