Rumah pembangunan bahagian belakang masalah PHP Bagaimana untuk menukar objek php ke dalam array

Bagaimana untuk menukar objek php ke dalam array

May 11, 2023 am 09:35 AM

Dalam pengaturcaraan PHP, objek dan tatasusunan ialah dua jenis data biasa. Kadangkala, kita perlu menukar objek PHP kepada tatasusunan untuk pemprosesan dan pengendalian yang mudah. Dalam artikel ini, kami akan memperkenalkan cara menukar objek PHP kepada tatasusunan.

Pertama, kita perlu memahami struktur objek dalam PHP. Objek PHP termasuk sifat dan kaedah. Harta boleh awam, peribadi atau dilindungi, manakala kaedah boleh awam, peribadi atau dilindungi. Kebenaran akses untuk sifat dan kaedah menentukan sama ada ia boleh dipanggil oleh kod luaran. Dalam pengaturcaraan sebenar, kita biasanya mentakrifkan pembina dalam kelas untuk memulakan sifat objek.

Sebelum menukar objek PHP kepada tatasusunan, kita perlu menentukan sama ada objek yang hendak ditukar mempunyai senarai harta awam. Jika tidak, kita boleh mempertimbangkan untuk menyimpan sifat objek dan nilai harta dalam tatasusunan bersekutu. Anda boleh mendapatkan senarai harta awam objek PHP dengan mudah menggunakan API Refleksi PHP. Semua sifat dalam kelas boleh diperoleh dengan memanggil kaedah getProperties() dalam kelas ReflectionClass dan mengembalikan tatasusunan objek ReflectionProperty. Objek ReflectionProperty menyediakan fungsi seperti akses kepada nama harta, nilai harta, dan kebenaran akses untuk mengakses sifat. Berikut ialah kod sampel:

class MyClass {
    public $name;
    protected $age;
    private $gender;

    public function __construct($name, $age, $gender) {
        $this->name = $name;
        $this->age = $age;
        $this->gender = $gender;
    }
}

$obj = new MyClass('Tom', 22, 'Male');
$reflection = new ReflectionClass($obj);
$properties = $reflection->getProperties(ReflectionProperty::IS_PUBLIC);
$arr = array();
foreach ($properties as $prop) {
    $prop_name = $prop->getName();
    $prop_value = $prop->getValue($obj);
    $arr[$prop_name] = $prop_value;
}

print_r($arr);
Salin selepas log masuk

Output adalah seperti berikut:

Array
(
    [name] => Tom
)
Salin selepas log masuk

Dalam contoh ini, kami mentakrifkan kelas MyClass dan mencipta contoh $obj. Dapatkan senarai harta awam objek $obj melalui kelas ReflectionClass dan simpan hasilnya dalam tatasusunan.

Seterusnya, kita boleh mempertimbangkan untuk menukar keseluruhan objek PHP menjadi tatasusunan bersekutu. Di sini kita boleh mencapainya dengan bantuan kaedah ajaib PHP __toArray(). Kaedah __toArray() boleh mengembalikan semua atribut dan nilai atribut kelas dalam bentuk tatasusunan bersekutu. Kita boleh mentakrifkan kaedah ajaib ini dalam kelas supaya ia mengembalikan tatasusunan bersekutu yang mengandungi semua sifat dan nilai harta. Berikut ialah kod sampel:

class MyClass {
    public $name;
    protected $age;
    private $gender;

    public function __construct($name, $age, $gender) {
        $this->name = $name;
        $this->age = $age;
        $this->gender = $gender;
    }

    public function __toArray() {
        return get_object_vars($this);
    }
}

$obj = new MyClass('Tom', 22, 'Male');
$arr = $obj->__toArray();
print_r($arr);
Salin selepas log masuk

Keluarannya adalah seperti berikut:

Array
(
    [name] => Tom
    [age:protected] => 22
    [gender:MyClass:private] => Male
)
Salin selepas log masuk

Dalam contoh ini, kami mentakrifkan kaedah __toArray() dalam kelas MyClass untuk menambah semua atribut dan sifat kelas Nilai dikembalikan dalam tatasusunan. Memanggil kaedah $obj->__toArray() akan mengembalikan tatasusunan yang mengandungi semua atribut dan nilai atribut.

Selain kaedah di atas, kami juga boleh menggunakan fungsi PHP sendiri untuk menukar objek PHP kepada tatasusunan. Fungsi yang paling biasa digunakan ialah get_object_vars() dan json_decode().

Fungsi get_object_vars() boleh mendapatkan semua atribut objek dan mengembalikan tatasusunan bersekutu yang mengandungi nama atribut dan nilai atribut.

Fungsi json_decode() boleh menukar rentetan format JSON kepada tatasusunan PHP. Selepas menukar objek kepada rentetan berformat JSON, kita boleh menggunakan fungsi json_decode() untuk menukar rentetan itu kepada tatasusunan.

Berikut ialah contoh kod yang menunjukkan cara menggunakan dua fungsi ini untuk menukar objek PHP kepada tatasusunan:

class MyClass {
    public $name;
    protected $age;
    private $gender;

    public function __construct($name, $age, $gender) {
        $this->name = $name;
        $this->age = $age;
        $this->gender = $gender;
    }
}

$obj = new MyClass('Tom', 22, 'Male');

// 将对象转化为数组
$arr1 = get_object_vars($obj);
$arr2 = json_decode(json_encode($obj), true);

print_r($arr1);
print_r($arr2);
Salin selepas log masuk

Outputnya adalah seperti berikut:

Array
(
    [name] => Tom
    [age] => 22
    [gender] => Male
)
Array
(
    [name] => Tom
    [age] => 22
    [gender] => Male
)
Salin selepas log masuk

Dalam ini contoh, Kami menggunakan fungsi get_object_vars() dan fungsi json_decode() untuk menukar objek PHP kepada tatasusunan dan mencetak hasilnya.

Ringkasnya, kita boleh menggunakan Reflection API, kaedah ajaib, fungsi get_object_vars() dan fungsi json_decode() untuk menukar objek PHP kepada tatasusunan. Walaupun kaedah ini berbeza, matlamat utama adalah untuk menukar objek kepada tatasusunan supaya kita boleh memproses dan mengendalikannya.

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

Kenyataan Laman Web ini
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

Tag artikel panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Apakah amalan terbaik untuk deduplikasi tatasusunan php Apakah amalan terbaik untuk deduplikasi tatasusunan php Mar 03, 2025 pm 04:41 PM

Apakah amalan terbaik untuk deduplikasi tatasusunan php

Bolehkah PHP Array Deduplication memanfaatkan keunikan nama utama? Bolehkah PHP Array Deduplication memanfaatkan keunikan nama utama? Mar 03, 2025 pm 04:51 PM

Bolehkah PHP Array Deduplication memanfaatkan keunikan nama utama?

Apakah piawaian pengekodan PHP terkini dan amalan terbaik? Apakah piawaian pengekodan PHP terkini dan amalan terbaik? Mar 10, 2025 pm 06:16 PM

Apakah piawaian pengekodan PHP terkini dan amalan terbaik?

Adakah Deduplication Array PHP perlu dipertimbangkan untuk kerugian prestasi? Adakah Deduplication Array PHP perlu dipertimbangkan untuk kerugian prestasi? Mar 03, 2025 pm 04:47 PM

Adakah Deduplication Array PHP perlu dipertimbangkan untuk kerugian prestasi?

Bagaimana saya bekerja dengan sambungan php dan pecl? Bagaimana saya bekerja dengan sambungan php dan pecl? Mar 10, 2025 pm 06:12 PM

Bagaimana saya bekerja dengan sambungan php dan pecl?

Bagaimana untuk melaksanakan beratur mesej (RabbitMQ, Redis) dalam PHP? Bagaimana untuk melaksanakan beratur mesej (RabbitMQ, Redis) dalam PHP? Mar 10, 2025 pm 06:15 PM

Bagaimana untuk melaksanakan beratur mesej (RabbitMQ, Redis) dalam PHP?

Apakah teknik pengoptimuman untuk deduplikasi tatasusunan php Apakah teknik pengoptimuman untuk deduplikasi tatasusunan php Mar 03, 2025 pm 04:50 PM

Apakah teknik pengoptimuman untuk deduplikasi tatasusunan php

Bagaimana menggunakan refleksi untuk menganalisis dan memanipulasi kod PHP? Bagaimana menggunakan refleksi untuk menganalisis dan memanipulasi kod PHP? Mar 10, 2025 pm 06:12 PM

Bagaimana menggunakan refleksi untuk menganalisis dan memanipulasi kod PHP?

See all articles