Dalam pembangunan PHP, kita selalunya perlu menukar antara objek dan tatasusunan Senario aplikasi biasa memerlukan penukaran objek kepada tatasusunan. PHP menyediakan banyak kaedah untuk melengkapkan proses penukaran ini, kaedah yang paling biasa digunakan ialah menukar objek kepada tatasusunan melalui kastor.
Dalam PHP, apabila kita menukar objek kepada tatasusunan, nama atribut objek digunakan secara automatik sebagai nama kunci dan nilai atribut disimpan dalam tatasusunan sebagai nilai kunci. Pada masa yang sama, PHP juga boleh secara selektif menukar sifat peribadi, dilindungi dan awam sesuatu objek.
Mari kita pelajari cara menukar objek kepada tatasusunan melalui contoh:
class BlogPost { private $title; private $content; protected $publishedAt; public function __construct($title, $content) { $this->title = $title; $this->content = $content; $this->publishedAt = date('Y-m-d H:i:s'); } } $post = new BlogPost('PHP Object Convert Array', 'PHP 中对象转换数组的实现'); $array_post = (array) $post; // 将对象转换为数组 print_r($array_post);
Dalam contoh di atas, kami menentukan kelas BlogPost
, yang mempunyai tiga atribut: title
, content
dan publishedAt
. Antaranya, title
dan content
ialah atribut peribadi dan publishedAt
ialah atribut yang dilindungi. Dalam pembina kelas, kami menetapkan atribut $title
dan $content
dan menetapkan atribut $publishedAt
kepada masa semasa secara lalai.
Seterusnya, kami membuat instantiate kelas BlogPost
dan menghantarnya ke tatasusunan $array_post
. Akhir sekali, kami menggunakan fungsi print_r
untuk mencetak kandungan tatasusunan $array_post
Anda boleh melihat output seperti berikut:
Array ( [BlogPosttitle] => PHP Object Convert Array [BlogPostcontent] => PHP 中对象转换数组的实现 [*publishedAt] => 2021-09-14 15:10:34 )
Anda boleh menemuinya apabila kami menggunakan (array)
untuk penukaran jenis. , nama atribut objek Nama kelas akan ditambah sebagai awalan. Ini kerana dalam PHP, nama atribut yang sama hanya boleh muncul sekali Untuk mengelakkan konflik nama atribut, PHP secara automatik menambah nama kelas sebagai awalan. Pada masa yang sama, kita juga boleh mengakses sifat objek melalui tatasusunan Contohnya, echo $array_post['BlogPosttitle'];
boleh mengeluarkan PHP Object Convert Array
.
Perlu diingat bahawa apabila terdapat sifat persendirian dan sifat yang dilindungi dalam objek, ia tidak boleh diakses secara lalai selepas ditukar kepada tatasusunan, tetapi jika kita ingin menambahkannya pada tatasusunan, kita boleh lulus ReflectionClass
kelas untuk dilaksanakan:
class BlogPost { private $title; private $content; protected $publishedAt; public function __construct($title, $content) { $this->title = $title; $this->content = $content; $this->publishedAt = date('Y-m-d H:i:s'); } } $post = new BlogPost('PHP Object Convert Array', 'PHP 中对象转换数组的实现'); $reflection_class = new ReflectionClass($post); $properties = $reflection_class->getProperties(ReflectionProperty::IS_PUBLIC | ReflectionProperty::IS_PROTECTED | ReflectionProperty::IS_PRIVATE); // 获取所有属性 $array_post = []; foreach ($properties as $property) { $property->setAccessible(true); // 设置属性可访问 $array_post[$property->getName()] = $property->getValue($post); // 将属性及属性值添加到数组中 } print_r($array_post);
Dalam contoh di atas, kami menggunakan kelas ReflectionClass
dan ReflectionProperty
untuk mendapatkan semua sifat objek, termasuk harta awam, harta dilindungi dan harta persendirian. Kemudian tetapkan atribut boleh diakses melalui kaedah setAccessible()
, dan akhirnya tambahkan atribut dan nilai atribut pada tatasusunan Hasil output adalah seperti berikut:
Array ( [title] => PHP Object Convert Array [content] => PHP 中对象转换数组的实现 [publishedAt] => 2021-09-14 15:10:34 )
Ringkasnya, PHP menyediakan pelbagai. cara menukar objek kepada Untuk tatasusunan, cara biasa ialah menggunakan watak pelakon (array)
. Pada masa yang sama, kami juga boleh menambahkan sifat peribadi dan sifat dilindungi secara terpilih pada tatasusunan, yang boleh dicapai melalui kelas ReflectionClass
. Tidak kira kaedah yang digunakan, anda boleh menukar objek kepada tatasusunan dengan mudah untuk pemprosesan dan penghantaran data objek yang lebih baik.
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!