首頁 後端開發 PHP問題 php  obj怎麼轉換為數組

php  obj怎麼轉換為數組

Apr 27, 2023 am 09:07 AM

在 PHP 開發中,有時需要將物件(Object)轉換為陣列(Array)的操作,以便於進行資料傳遞和處理等操作。本文介紹了 PHP 中將物件轉換為陣列的方法。

一、使用get_object_vars 函數進行轉換

PHP 內建函數get_object_vars 可以取得物件中所有可見屬性的陣列表示形式(鍵是屬性名,值是屬性值),我們可以將其傳回的陣列直接作為需要的陣列。

範例程式碼:

class Car {
    public $brand = 'Audi';
    public $model = 'A6';
    private $price = 80000;
    
    public function __construct()
    {
        # code...
    }
}

$car = new Car();
$arr = get_object_vars($car);
print_r($arr);
登入後複製

執行結果:

Array
(
    [brand] => Audi
    [model] => A6
)
登入後複製
登入後複製

可見,由於 $price 屬性是 private 的,因此不會出現在傳回的陣列中。

二、使用 json_decode 函數轉換

我們可以使用 PHP 內建函數 json_decode 將物件轉換為 JSON 格式的字串,再轉換為陣列。

範例程式碼:

class Car {
    public $brand = 'Audi';
    public $model = 'A6';
    private $price = 80000;
    
    public function __construct()
    {
        # code...
    }
}

$car = new Car();
$jsonStr = json_encode($car);
$arr = json_decode($jsonStr, true);
print_r($arr);
登入後複製

執行結果:

Array
(
    [brand] => Audi
    [model] => A6
)
登入後複製
登入後複製

同樣地,由於 $price 屬性是 private 的,因此不會出現在轉換後的陣列中。

三、使用類型強制轉換進行轉換

在 PHP 中,除了使用 get_object_vars 函數和 json_decode 函數進行物件轉換成陣列之外,還可以使用強制型別轉換進行轉換。我們可以將物件強制轉換為陣列類型,傳回的陣列中的鍵是屬性名,值是屬性值。

範例程式碼:

class Car {
    public $brand = 'Audi';
    public $model = 'A6';
    private $price = 80000;
    
    public function __construct()
    {
        # code...
    }
}

$car = new Car();
$arr = (array) $car;
print_r($arr);
登入後複製

執行結果:

Array
(
    [brand] => Audi
    [model] => A6
    [*price] => 80000
)
登入後複製

可以看到,與get_object_vars 函數和json_decode 函數進行轉換的結果不同,強制型別轉換後的陣列中,除了公有屬性之外,還會包含私有屬性,並以* 開頭的標記來表示私有屬性。

要注意的是,如果物件中有__toString 方法,則強制類型轉換為陣列時會將__toString 方法的傳回值作為陣列的第一個元素(鍵為0,值為傳回值)。

四、使用反射進行轉化

PHP 的反射機制可以對類別、物件和方法進行分析和調用,反射提供獲取物件的屬性和方法的功能,透過反射類,我們可以取得物件的屬性和存取等級(public、private 或protected)。

範例程式碼:

class Car {
    public $brand = 'Audi';
    public $model = 'A6';
    private $price = 80000;
    
    public function __construct()
    {
        # code...
    }
}

$car = new Car();
$reflection = new ReflectionObject($car);
$arr = [];

foreach ($reflection->getProperties() as $property) {
    $property->setAccessible(true);
    $arr[$property->getName()] = $property->getValue($car);
}

print_r($arr);
登入後複製

執行結果:

Array
(
    [brand] => Audi
    [model] => A6
    [price] => 80000
)
登入後複製

可以看到,透過反射取得物件屬性時,不受存取等級(public、private 或protected)的限制,同時,取得到的屬性名稱和屬性值均包含在陣列中。

綜上所述,本文介紹了 PHP 將物件轉換為陣列的多種方法。在實際開發中,選擇哪種方法應根據需求和程式碼的實際情況而定。

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

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

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
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)

熱門話題

Java教學
1665
14
CakePHP 教程
1423
52
Laravel 教程
1321
25
PHP教程
1269
29
C# 教程
1249
24