Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk menukar obj ke dalam array dalam php
Dalam pembangunan PHP, kadangkala perlu menukar objek kepada tatasusunan untuk memudahkan pemindahan dan pemprosesan data. Artikel ini memperkenalkan cara menukar objek kepada tatasusunan dalam PHP.
1. Gunakan fungsi get_object_vars untuk penukaran
Fungsi terbina dalam PHP get_object_vars boleh mendapatkan perwakilan tatasusunan semua atribut yang boleh dilihat dalam objek (kuncinya ialah nama atribut dan nilainya ialah nilai atribut). Kita boleh menukarnya Tatasusunan yang dikembalikan digunakan secara langsung sebagai tatasusunan yang diperlukan.
Kod sampel:
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);
Hasil pelaksanaan:
Array ( [brand] => Audi [model] => A6 )
Kelihatan, kerana sifat $price adalah peribadi, ia tidak akan muncul dalam tatasusunan yang dikembalikan.
2. Gunakan fungsi json_decode untuk penukaran
Kita boleh menggunakan fungsi terbina dalam PHP json_decode untuk menukar objek kepada rentetan dalam format JSON, dan kemudian menukarnya kepada tatasusunan.
Kod sampel:
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);
Hasil pelaksanaan:
Array ( [brand] => Audi [model] => A6 )
Begitu juga, memandangkan atribut $price adalah peribadi, ia tidak akan muncul dalam tatasusunan yang ditukar.
3. Gunakan jenis cast untuk penukaran
Dalam PHP, selain menggunakan fungsi get_object_vars dan fungsi json_decode untuk menukar objek kepada tatasusunan, anda juga boleh menggunakan cast untuk penukaran. Kita boleh memaksa objek menjadi jenis tatasusunan Kekunci dalam tatasusunan yang dikembalikan ialah nama harta dan nilainya ialah nilai harta.
Kod contoh:
class Car { public $brand = 'Audi'; public $model = 'A6'; private $price = 80000; public function __construct() { # code... } } $car = new Car(); $arr = (array) $car; print_r($arr);
Hasil pelaksanaan:
Array ( [brand] => Audi [model] => A6 [*price] => 80000 )
Seperti yang anda lihat, berbeza daripada hasil penukaran fungsi get_object_vars dan fungsi json_decode, dalam tatasusunan selepas penukaran jenis paksa , Selain harta awam, harta persendirian juga disertakan dan ditandakan dengan * untuk menunjukkan harta persendirian.
Perlu diambil perhatian bahawa jika terdapat kaedah __toString dalam objek, apabila objek dilemparkan ke tatasusunan, nilai pulangan kaedah __toString akan digunakan sebagai elemen pertama tatasusunan (kunci ialah 0 dan nilainya ialah nilai pulangan ).
4. Gunakan refleksi untuk transformasi
Mekanisme refleksi PHP boleh menganalisis dan memanggil kelas, objek dan kaedah Refleksi menyediakan fungsi untuk mendapatkan sifat dan kaedah objek Melalui kelas refleksi, kami Anda boleh mendapatkan sifat objek dan tahap akses (awam, peribadi atau dilindungi).
Kod sampel:
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);
Hasil pelaksanaan:
Array ( [brand] => Audi [model] => A6 [price] => 80000 )
Seperti yang anda lihat, apabila mendapatkan sifat objek melalui refleksi, ia tidak dihadkan oleh tahap akses (awam, peribadi atau dilindungi), pada masa yang sama, nama atribut yang diperolehi dan nilai atribut disertakan dalam tatasusunan.
Ringkasnya, artikel ini memperkenalkan pelbagai kaedah untuk menukar objek kepada tatasusunan dalam PHP. Dalam pembangunan sebenar, kaedah mana yang hendak dipilih harus berdasarkan keperluan dan situasi sebenar kod tersebut.
Atas ialah kandungan terperinci Bagaimana untuk menukar obj ke dalam array dalam php. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!