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

Bagaimana untuk menukar objek ke dalam array dalam php

Apr 23, 2023 am 09:17 AM

Dalam PHP, kami sering menggunakan objek untuk menyatakan entiti atau konsep kehidupan sebenar, dan tatasusunan juga digunakan untuk mewakili satu set nilai atau data yang berkaitan. Untuk objek yang telah dibuat, kita mungkin perlu menukarnya kepada tatasusunan untuk memudahkan operasi atau memindahkan data Jadi, adakah PHP menyokong penukaran objek kepada tatasusunan?

Jawapannya ialah ya. Terdapat banyak cara untuk menukar objek kepada tatasusunan dalam PHP, termasuk kaedah ajaib yang ditakrifkan dalam kelas, fungsi yang disediakan dalam pustaka standard, dsb. Di bawah kami memperkenalkan perincian kaedah ini dan gunakan.

1. Gunakan kaedah ajaib yang ditakrifkan dalam kelas

Dalam PHP, kita boleh merealisasikan fungsi menukar objek kepada tatasusunan dengan mentakrifkan kaedah ajaib __toArray() dalam kelas fungsi kaedah ini ialah Prototaip adalah seperti berikut:

public function __toArray(): array;
Salin selepas log masuk

Dalam proses mentakrifkan kaedah ini, kita perlu mengembalikan tatasusunan dengan pasangan nilai kunci sebagai elemen, di mana kuncinya ialah nama atribut dan nilai ialah nilai atribut, contohnya:

class Person {
    private $name;
    private $age;
    
    public function __construct(string $name, int $age) {
        $this->name = $name;
        $this->age = $age;
    }
    
    public function __toArray(): array {
        return [
            'name' => $this->name,
            'age' => $this->age,
        ];
    }
}

$person = new Person('张三', 20);
$arr = $person->__toArray();
print_r($arr);
Salin selepas log masuk

Selepas menjalankan kod di atas, output adalah seperti berikut:

Array
(
    [name] => 张三
    [age] => 20
)
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Seperti yang anda lihat, dengan mentakrifkan __toArray( ) kaedah, kami berjaya menukar objek Orang menjadi tatasusunan.

2. Gunakan fungsi perpustakaan standard

Dalam PHP, pustaka standard menyediakan berbilang fungsi untuk menukar objek kepada tatasusunan termasuk get_object_vars(), json_decode(), dsb. Di bawah kami Perkenalkan. penggunaan khusus fungsi ini.

  1. get_object_vars()

Fungsi ini digunakan untuk mendapatkan semua atribut objek (termasuk atribut peribadi), dan mengembalikan objek dengan nama atribut sebagai kunci dan nilai atribut sebagai nilai, sebagai contoh:

class Person {
    private $name;
    private $age;
    
    public function __construct(string $name, int $age) {
        $this->name = $name;
        $this->age = $age;
    }
}

$person = new Person('张三', 20);
$arr = get_object_vars($person);
print_r($arr);
Salin selepas log masuk

Selepas menjalankan kod di atas, output adalah seperti berikut:

Array
(
    [name] => 张三
    [age] => 20
)
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Seperti yang anda lihat, walaupun jika atribut $name dan $age ialah atribut peribadi, gunakan get_object_vars() Kaedah ini masih boleh berjaya menukarnya menjadi tatasusunan.

  1. json_decode()

Fungsi ini digunakan untuk menyahkod rentetan JSON dan menukarnya kepada pembolehubah PHP, dengan itu menukar objek kepada tatasusunan. Contohnya:

class Person {
    private $name;
    private $age;
    
    public function __construct(string $name, int $age) {
        $this->name = $name;
        $this->age = $age;
    }
}

$person = new Person('张三', 20);
$json = json_encode($person);
$arr = json_decode($json, true);
print_r($arr);
Salin selepas log masuk

Selepas menjalankan kod di atas, output adalah seperti berikut:

Array
(
    [name] => 张三
    [age] => 20
)
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Seperti yang anda lihat, dengan menukar objek kepada rentetan JSON dan menghuraikannya menggunakan kaedah json_decode() , kami berjaya menukarnya menjadi tatasusunan.

Ringkasan

Dalam PHP, kita boleh menggunakan pelbagai kaedah untuk menukar objek kepada tatasusunan, termasuk mentakrifkan kaedah ajaib __toArray() dalam kelas, menggunakan fungsi perpustakaan standard get_object_vars( ), json_decode() dan kaedah lain. Kaedah yang berbeza sesuai untuk majlis yang berbeza, dan penggunaan khusus perlu dipilih berdasarkan situasi sebenar.

Atas ialah kandungan terperinci Bagaimana untuk menukar objek ke dalam array dalam php. 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?

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

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 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