XML digunakan secara meluas sebagai format penghantaran data biasa dalam banyak aplikasi web. Sebagai bahasa pembangunan web biasa, PHP secara semula jadi perlu dapat memproses data XML dengan mudah. Dalam PHP, menukar data XML kepada tatasusunan adalah keperluan yang sangat biasa. Artikel ini akan menerangkan cara menukar data XML kepada tatasusunan menggunakan PHP.
Pertama, untuk menukar data XML kepada tatasusunan, anda perlu menggunakan simplexml_load_string(), fungsi terbina dalam PHP. Fungsi ini memuatkan rentetan XML ke dalam PHP dan menghuraikannya, mengembalikan contoh SimpleXMLElement. SimpleXMLElement ialah kelas dalam PHP yang digunakan khusus untuk memproses data XML. Ia mengandungi banyak kaedah berguna untuk melintasi dan memanipulasi data XML.
Andaikan kita mempunyai data XML berikut:
<?xml version="1.0" encoding="UTF-8"?> <bookstore> <book category="children"> <title lang="en">Harry Potter</title> <author>J.K. Rowling</author> <price>29.99</price> </book> <book category="fiction"> <title lang="en">The Hunger Games</title> <author>Suzanne Collins</author> <price>22.99</price> </book> </bookstore>
Kita boleh menggunakan fungsi simplexml_load_string() untuk memuatkannya ke dalam PHP:
$xml = '<?xml version="1.0" encoding="UTF-8"?> <bookstore> <book category="children"> <title lang="en">Harry Potter</title> <author>J.K. Rowling</author> <price>29.99</price> </book> <book category="fiction"> <title lang="en">The Hunger Games</title> <author>Suzanne Collins</author> <price>22.99</price> </book> </bookstore>'; $xmlObj = simplexml_load_string($xml);
Kini $ xmlObj ialah contoh SimpleXMLElement, dan kita boleh menggunakan kaedahnya untuk melintasi dan memanipulasi data XML. Walau bagaimanapun, jika kita perlu memproses lebih lanjut data XML, seperti menapis dan menyusun nod tertentu, adalah tidak mudah untuk menggunakan SimpleXMLElement. Oleh itu, kita perlu menukarnya kepada tatasusunan.
Menukar SimpleXMLElement kepada tatasusunan adalah sangat mudah, cuma tambahkan hantaran (tatasusunan) sebelum objek:
$xmlArr = (array) $xmlObj; print_r($xmlArr);
Kod di atas akan mengeluarkan hasil berikut:
Array ( [book] => Array ( [0] => Array ( [@attributes] => Array ( [category] => children ) [title] => Array ( [@attributes] => Array ( [lang] => en ) [0] => Harry Potter ) [author] => J.K. Rowling [price] => 29.99 ) [1] => Array ( [@attributes] => Array ( [category] => fiction ) [title] => Array ( [@attributes] => Array ( [lang] => en ) [0] => The Hunger Games ) [author] => Suzanne Collins [price] => 22.99 ) ) )
Seperti yang anda boleh lihat, kami mendapat tatasusunan dua dimensi, di mana setiap nod ditukar menjadi tatasusunan bersekutu. Jika terdapat berbilang nod dengan nama yang sama dalam data XML, ia akan ditukar kepada tatasusunan Sebagai contoh, kedua-dua buku di sini ditukar kepada tatasusunan buku.
Perlu diambil perhatian bahawa dalam tatasusunan yang ditukar, setiap nod mempunyai kunci bernama @attributes, yang sepadan dengan atribut nod. Contohnya, nod buku mempunyai atribut kategori dan nilainya ditukar kepada nilai kekunci @attributes['category'].
Selain itu, memandangkan SimpleXMLElement ialah struktur rekursif, ia mengandungi banyak nod anak bersarang. Oleh itu, tatasusunan yang ditukar juga merupakan struktur rekursif, di mana setiap sub-tatasusunan sepadan dengan nod anak.
Sudah tentu, jika terdapat beberapa nod khas dalam data XML yang memerlukan pemprosesan khas, seperti nod CDATA, nod kosong, dsb., anda perlu menggunakan beberapa kaedah khas untuk mengendalikannya. Tetapi untuk data XML biasa, menggunakan simplexml_load_string() dan (array) cast cukup mudah untuk menukar data XML kepada tatasusunan.
Atas ialah kandungan terperinci Bagaimana untuk menukar xml ke array dalam php. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!