Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk menukar objek php kepada array
Dalam PHP, objek dan tatasusunan ialah jenis data yang sangat penting, dan ia mempunyai ciri dan kegunaan tersendiri. Semasa proses pembangunan, kita selalunya perlu menukar objek kepada tatasusunan untuk memudahkan penghantaran dan pemprosesan data. Artikel ini akan memperkenalkan secara terperinci kaedah penukaran antara objek dan tatasusunan PHP serta langkah berjaga-jaganya.
1. Konsep asas objek PHP
Dalam PHP, objek ialah asas pengaturcaraan berorientasikan objek Ia adalah entiti yang dibuat seketika daripada kelas dan boleh dimanipulasi melalui kaedah dan sifat. ia. Berikut ialah sintaks asas untuk mencipta objek:
class MyClass { public $name; public function sayHello() { echo "Hello, my name is " . $this->name; } } $obj = new MyClass(); $obj->name = "PHP"; $obj->sayHello();
Dalam kod di atas, kami mula-mula mentakrifkan kelas MyClass, yang mempunyai $name harta awam dan kaedah awam sayHello, dan kemudian kami mencipta objek MyClass $obj, dan tetapkan atribut $name kepada "PHP", dan akhirnya panggil kaedah sayHello $obj untuk mengeluarkan hasilnya.
2. Kaedah menukar objek PHP kepada tatasusunan
Menukar objek kepada tatasusunan ialah operasi yang agak biasa PHP menyediakan dua kaedah: penukaran jenis paksa dan bersiri.
Kita boleh menukarkan objek kepada tatasusunan melalui (tatasusunan) atau get_object_vars(). pasangan nilai kunci.
class MyClass { public $name = "PHP"; private $age = 20; } $obj = new MyClass(); $arr = (array) $obj; var_dump($arr); //输出:array(2) { ["name"]=> string(3) "PHP" ["age"]=> int(20) } $obj = new MyClass(); $arr = get_object_vars($obj); var_dump($arr); //输出:array(1) { ["name"]=> string(3) "PHP" }
Dalam kod di atas, kami mula-mula mentakrifkan kelas MyClass, yang mempunyai atribut awam $name dan atribut peribadi $age Kemudian kami menukar objek ini melalui (array) dan get_object_vars() masing-masing ialah tatasusunan, dan akhirnya mengeluarkan keputusan mereka.
Perlu diambil perhatian bahawa apabila menggunakan penukaran jenis paksa, nilai atribut peribadi tidak boleh diperoleh dan hanya atribut awam boleh ditukar dengan jayanya. Jika kita perlu menukar sifat peribadi kepada tatasusunan, kita perlu menggunakan ReflectionClass.
Dalam PHP, serialization (serialize) merujuk kepada proses menukar objek atau tatasusunan kepada rentetan, manakala deserialisasi (unserialize) ialah Menukar rentetan menjadi objek atau tatasusunan asal. Kita boleh melaksanakan penyiaran dan penyahserikatan melalui fungsi bersiri() dan unserialize().
class MyClass { public $name = "PHP"; private $age = 20; } $obj = new MyClass(); $str = serialize($obj); //序列化对象 $arr = unserialize($str); //反序列化数组 var_dump($arr); //输出:object(MyClass)#2 (2) { ["name"]=> string(3) "PHP" ["age":"MyClass":private]=> int(20) }
Dalam kod di atas, kami mula-mula mentakrifkan kelas MyClass, yang mempunyai harta awam $nama dan harta peribadi $age, kemudian kami menyerikan objek $obj ke dalam rentetan $str, dan kemudian nyahserialisasikan untuk mendapatkan tatasusunan $arr dan keluarkan hasilnya.
Perlu diambil perhatian bahawa apabila menggunakan penyirian, nilai atribut persendirian juga boleh diperolehi, tetapi apabila penyahserikatan, anda perlu memastikan bahawa definisi kelas bagi objek asal wujud, jika tidak, unserialize(data): kelas yang tidak ditentukan akan muncul Ralat dengan 'xxxx' yang berterusan.
3. Kaedah menukar tatasusunan PHP kepada objek
Selain menukarkan objek kepada tatasusunan, selalunya perlu untuk menukar tatasusunan kepada objek. Dalam PHP, kita boleh mencapai ini melalui fungsi cast atau json_decode().
Untuk menukar tatasusunan kepada objek, anda hanya perlu menetapkan tatasusunan kepada objek. Nama atribut objek ialah nama kunci tatasusunan, dan nilai atribut ialah nilai kunci tatasusunan.
class MyClass {} $arr = array('name' =>'PHP', 'age' =>20); $obj = (object) $arr; var_dump($obj); //输出:object(stdClass)#1 (2) { ["name"]=> string(3) "PHP" ["age"]=> int(20) }
Dalam kod di atas, kami mula-mula mencipta kelas MyClass yang kosong, kemudian mentakrifkan tatasusunan $arr, yang mengandungi dua pasangan nilai kunci 'nama' dan 'umur', dan kemudian meneruskannya melalui ( objek ) dilemparkan ke objek $obj dan mengeluarkan hasilnya.
Kami juga boleh menggunakan fungsi json_decode() untuk menukar tatasusunan kepada objek, dan kaedah pelaksanaannya juga sangat mudah. Tukar tatasusunan kepada rentetan JSON menggunakan fungsi json_encode() dan kemudian gunakan fungsi json_decode() untuk menukar rentetan JSON kepada objek.
class MyClass {} $arr = array('name' =>'PHP', 'age' =>20); $json = json_encode($arr); $obj = json_decode($json); var_dump($obj); //输出:object(stdClass)#1 (2) { ["name"]=> string(3) "PHP" ["age"]=> int(20) }
Dalam kod di atas, kami mula-mula mencipta kelas MyClass yang kosong, kemudian mentakrifkan tatasusunan $arr, yang mengandungi dua pasangan nilai kunci 'nama' dan 'umur', dan kemudian menghantarnya melalui json_encode ( ) ke dalam rentetan JSON $json, kemudian gunakan fungsi json_decode() untuk menukar rentetan JSON kepada objek $obj, dan keluarkan hasilnya. Perlu diingat bahawa json_decode() mengembalikan objek PHP secara lalai dan bukannya tatasusunan.
4. Beberapa perkara yang perlu diberi perhatian
Walaupun kaedah penukaran antara objek dan tatasusunan adalah sangat mudah, masih terdapat beberapa perkara yang perlu diberi perhatian semasa penggunaan.
Apabila objek ditukar kepada tatasusunan, nilai harta persendirian tidak boleh anda gunakan ReflectionClass untuk mendapatkannya Jika tidak, ralat Harta peribadi tidak boleh diakses dalam... akan muncul.
Walaupun siri adalah mudah dan ringkas, apabila memproses sejumlah besar data, siri akan menduduki banyak CPU dan memori, jadi anda perlu memberi perhatian kepada penggunaannya.
Apabila ralat berlaku dalam menghuraikan rentetan JSON, fungsi json_decode() mungkin mengembalikan false , anda perlu memberi perhatian.
Ringkasnya, penukaran antara objek dan tatasusunan sangat biasa digunakan dalam PHP, dan boleh dicapai melalui penukaran jenis paksa dan bersiri. Apabila pembangunan aplikasi memerlukan penggunaan objek dan tatasusunan yang kerap, menguasai kemahiran ini akan meningkatkan kecekapan kerja dengan ketara.
Atas ialah kandungan terperinci Bagaimana untuk menukar objek php kepada array. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!