Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk menukar objek menjadi array dalam php

Bagaimana untuk menukar objek menjadi array dalam php

PHPz
PHPzasal
2023-04-24 15:51:11436semak imbas

Dalam PHP, objek dan tatasusunan adalah jenis data yang sangat biasa digunakan. Objek ialah struktur yang merangkum sifat dan kaedah, manakala tatasusunan ialah set tersusun pasangan nilai kunci. Dalam sesetengah senario, kita mungkin perlu menukar objek kepada objek tatasusunan untuk memudahkan operasi data.

Dalam PHP, operator penukaran jenis paksa digunakan untuk menukar objek kepada tatasusunan Operator ialah "()" (kurungan) Pada masa yang sama, kita boleh menambah awalan "tatasusunan". kurungan untuk menentukan nama kunci tatasusunan:

$array = (array) $object;        //强制类型转换,使用默认键名
$array = (array)($object);       //同上
$array = (array) $object_arrray; //强制类型转换并指定键名数组

Jika tiada nama kunci dinyatakan, operator cast akan menggunakan kaedah lalai untuk menukar objek kepada tatasusunan Secara khusus, setiap atribut objek ditambahkan pada tatasusunan sebagai pasangan nilai kunci , nama kunci ialah nama atribut, dan nilai kunci ialah nilai atribut. Jika objek mengandungi objek lain, objek ini akan ditukar secara rekursif kepada tatasusunan. Kod berikut:

class Person
{
    public $name = "David";
    public $age = 32;
    public $profession = "Software Engineer";
}

class Company
{
    public $name = "ABC Company";
    public $employees;
    
    public function __construct() {
        $this->employees = array(
            new Person(),
            new Person(),
            new Person()
        );
    }
}

$company = new Company();
$array = (array)($company);

print_r($array);

Hasil output adalah seperti berikut:

Array
(
    [name] => ABC Company
    [employees] => Array
        (
            [0] => Person Object
                (
                    [name] => David
                    [age] => 32
                    [profession] => Software Engineer
                )

            [1] => Person Object
                (
                    [name] => David
                    [age] => 32
                    [profession] => Software Engineer
                )

            [2] => Person Object
                (
                    [name] => David
                    [age] => 32
                    [profession] => Software Engineer
                )

        )

)

Seperti yang anda lihat, objek $company dipaksa untuk ditukar menjadi tatasusunan $array , dan juga mengandungi $company Semua sifat objek.

Dalam contoh di atas, kita dapati bahawa hantaran hanya menukar sifat objek kepada pasangan nilai kunci tatasusunan dan kaedah objek tidak akan ditukar. Jika kita perlu menukar kaedah objek kepada tatasusunan, kita perlu menggunakan kaedah ajaib __sleep() dan __wakeup() dalam kelas untuk mencapai ini. Antaranya, kaedah __sleep() digunakan untuk menyimpan semua sifat objek ke dalam tatasusunan, manakala kaedah __wakeup() digunakan untuk menukar tatasusunan yang disimpan kembali kepada objek.

class Person
{
    public $name = "David";
    public $age = 32;
    public $profession = "Software Engineer";
    
    public function run() {
        echo "I am running...";
    }
    
    public function sleep() {
        echo "I am sleeping...";
    }
    
    public function __sleep() {
        return array(
            "name",
            "age",
            "profession"
        );
    }
    
    public function __wakeup() {
    }
}

$person = new Person();
$array = (array)($person);

print_r($array);

Hasil output adalah seperti berikut:

Array
(
    [name] => David
    [age] => 32
    [profession] => Software Engineer
)

Anda boleh mendapati bahawa hasil output hanya mengandungi atribut objek $person dan kaedah diabaikan.

Ringkasnya, dalam PHP, menggunakan operator cast dan kaedah __sleep(), __wakeup(), kita boleh menukar objek kepada objek tatasusunan untuk mencapai manipulasi data yang lebih fleksibel.

Atas ialah kandungan terperinci Bagaimana untuk menukar objek menjadi array dalam php. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn