Dalam pembangunan web, XML dan format tatasusunan sering digunakan untuk menyimpan dan menghantar data. XML ialah bahasa penanda yang sering digunakan untuk penerangan data dan penghantaran interaktif, manakala tatasusunan ialah struktur data yang sering digunakan untuk pemprosesan dan operasi data dalam program. Dalam bahasa PHP, kita boleh menukar PHP kepada XML dan tatasusunan, dan penukaran ini sangat mudah dan pantas.
Artikel ini terutamanya memperkenalkan kaedah penukaran bersama antara PHP, XML dan tatasusunan dalam PHP, termasuk kaedah penukaran daripada XML kepada tatasusunan dan daripada tatasusunan kepada XML.
1. Penukaran bersama antara PHP dan XML
Dalam PHP, kita boleh menggunakan sambungan SimpleXML untuk merealisasikan penukaran bersama antara PHP dan XML. SimpleXML ialah sambungan terbina dalam PHP untuk memproses data dalam fail XML. Ia boleh menukar fail XML kepada objek atau tatasusunan PHP, dan juga menukar objek atau tatasusunan PHP kepada fail XML.
Untuk menukar fail XML kepada tatasusunan PHP, anda perlu menggunakan fungsi simplexml_load_file dalam sambungan SimpleXML. Fungsi simplexml_load_file boleh membaca fail XML pada laluan yang ditentukan dan mengembalikan objek SimpleXMLElement, dan kemudian menukar maklumat dalam fail XML kepada tatasusunan PHP dengan merentasi objek SimpleXMLElement.
Berikut ialah contoh kod untuk menukar fail XML kepada tatasusunan PHP:
$xmlStr = <<<XML <?xml version='1.0'?> <menu> <item> <name>Chicken Curry</name> <price>8.95</price> <description>A spicy dish with chicken, carrots, and potatoes</description> </item> <item> <name>Beef Stir Fry</name> <price>10.95</price> <description>A savory dish with beef, mushrooms, and peppers</description> </item> </menu> XML; $xml = simplexml_load_string($xmlStr); $menu = []; foreach ($xml->item as $item) { $menu[] = [ 'name' => (string) $item->name, 'price' => (float) $item->price, 'description' => (string) $item->description, ]; } print_r($menu);
Jalankan kod di atas, hasil output ialah:
Array ( [0] => Array ( [name] => Chicken Curry [price] => 8.95 [description] => A spicy dish with chicken, carrots, and potatoes ) [1] => Array ( [name] => Beef Stir Fry [price] => 10.95 [description] => A savory dish with beef, mushrooms, and peppers ) )
Untuk menukar tatasusunan PHP kepada fail XML, data dalam tatasusunan perlu disusun mengikut peraturan sintaks XML. Dalam PHP, kita boleh menggunakan kelas SimpleXMLElement untuk mencipta elemen XML, dan menggunakan gelung foreach untuk lelaran melalui data dalam tatasusunan, menambah data pada elemen XML satu demi satu, dan akhirnya mengeluarkan atau menyimpan fail XML ke yang ditentukan lokasi melalui kaedah asXML objek SimpleXMLElement .
Berikut ialah contoh kod untuk menukar tatasusunan PHP kepada fail XML:
$menu = [ [ 'name' => 'Chicken Curry', 'price' => 8.95, 'description' => 'A spicy dish with chicken, carrots, and potatoes' ], [ 'name' => 'Beef Stir Fry', 'price' => 10.95, 'description' => 'A savory dish with beef, mushrooms, and peppers' ] ]; $xml = new SimpleXMLElement('<menu></menu>'); foreach ($menu as $item) { $menuItem = $xml->addChild('item'); $menuItem->addChild('name', $item['name']); $menuItem->addChild('price', $item['price']); $menuItem->addChild('description', $item['description']); } $xmlStr = $xml->asXML(); echo $xmlStr;
Jalankan kod di atas, hasil output ialah:
<?xml version="1.0"?> <menu> <item> <name>Chicken Curry</name> <price>8.95</price> <description>A spicy dish with chicken, carrots, and potatoes</description> </item> <item> <name>Beef Stir Fry</name> <price>10.95</price> <description>A savory dish with beef, mushrooms, and peppers</description> </item> </menu>
2. Penukaran PHP kepada dan dari tatasusunan
Dalam PHP, kita boleh menggunakan fungsi json_encode dan json_decode untuk menukar PHP kepada tatasusunan. Fungsi json_encode menukar tatasusunan dalam PHP kepada rentetan berformat JSON dan mengembalikan rentetan yang ditukar fungsi json_decode menukar rentetan berformat JSON kepada tatasusunan dalam PHP.
Untuk menukar tatasusunan PHP kepada rentetan format JSON, anda perlu menggunakan fungsi json_encode. Fungsi json_encode boleh menukar tatasusunan dalam PHP kepada rentetan berformat JSON dan mengembalikan nilai yang mewakili rentetan JSON.
Berikut ialah contoh kod untuk menukar tatasusunan PHP kepada rentetan dalam format JSON:
$menu = [ [ 'name' => 'Chicken Curry', 'price' => 8.95, 'description' => 'A spicy dish with chicken, carrots, and potatoes' ], [ 'name' => 'Beef Stir Fry', 'price' => 10.95, 'description' => 'A savory dish with beef, mushrooms, and peppers' ] ]; $json = json_encode($menu); echo $json;
Jalankan kod di atas, hasil output ialah:
[{"name":"Chicken Curry","price":8.95,"description":"A spicy dish with chicken, carrots, and potatoes"},{"name":"Beef Stir Fry","price":10.95,"description":"A savory dish with beef, mushrooms, and peppers"}]
Untuk menukar rentetan dalam format JSON kepada tatasusunan PHP, anda perlu menggunakan fungsi json_decode. Fungsi json_decode boleh menukar rentetan berformat JSON kepada tatasusunan dalam PHP dan mengembalikan nilai yang mewakili tatasusunan PHP.
Berikut ialah contoh kod untuk menukar rentetan berformat JSON kepada tatasusunan PHP:
$json = '[{"name":"Chicken Curry","price":8.95,"description":"A spicy dish with chicken, carrots, and potatoes"},{"name":"Beef Stir Fry","price":10.95,"description":"A savory dish with beef, mushrooms, and peppers"}]'; $menu = json_decode($json, true); print_r($menu);
Jalankan kod di atas, hasil output ialah:
Array ( [0] => Array ( [name] => Chicken Curry [price] => 8.95 [description] => A spicy dish with chicken, carrots, and potatoes ) [1] => Array ( [name] => Beef Stir Fry [price] => 10.95 [description] => A savory dish with beef, mushrooms, and peppers ) )
3. Penukaran bersama antara tatasusunan PHP dan XML
Dalam PHP, kita boleh menggunakan sambungan SimpleXML dan fungsi json_encode/json_decode untuk merealisasikan penukaran bersama antara PHP, XML dan tatasusunan. Secara khusus, kita boleh menukar fail XML kepada tatasusunan PHP, dan kemudian menukar tatasusunan PHP kepada rentetan berformat JSON, kami juga boleh menukar rentetan berformat JSON kepada tatasusunan PHP, dan kemudian menukar tatasusunan PHP kepada Objek SimpleXMLElement, dan akhirnya dapatkan fail XML.
Berikut ialah contoh kod lengkap penukaran antara tatasusunan PHP dan XML:
$xmlStr = <<<XML <?xml version='1.0'?> <menu> <item> <name>Chicken Curry</name> <price>8.95</price> <description>A spicy dish with chicken, carrots, and potatoes</description> </item> <item> <name>Beef Stir Fry</name> <price>10.95</price> <description>A savory dish with beef, mushrooms, and peppers</description> </item> </menu> XML; // 将XML文件转换为PHP数组 $xml = simplexml_load_string($xmlStr); $menu = []; foreach ($xml->item as $item) { $menu[] = [ 'name' => (string) $item->name, 'price' => (float) $item->price, 'description' => (string) $item->description, ]; } // 将PHP数组转换为JSON格式的字符串 $json = json_encode($menu); // 将JSON格式的字符串转换为PHP数组 $menu = json_decode($json, true); // 将PHP数组转换为SimpleXMLElement对象 $xml = new SimpleXMLElement('<menu></menu>'); foreach ($menu as $item) { $menuItem = $xml->addChild('item'); $menuItem->addChild('name', $item['name']); $menuItem->addChild('price', $item['price']); $menuItem->addChild('description', $item['description']); } // 输出XML文件 $xmlStr = $xml->asXML(); echo $xmlStr;
Jalankan kod di atas, hasil output ialah:
<?xml version="1.0"?> <menu> <item> <name>Chicken Curry</name> <price>8.95</price> <description>A spicy dish with chicken, carrots, and potatoes</description> </item> <item> <name>Beef Stir Fry</name> <price>10.95</price> <description>A savory dish with beef, mushrooms, and peppers</description> </item> </menu>
Ringkasan
Di atas ialah kaedah menukar PHP kepada XML dan tatasusunan Ia sangat mudah dan praktikal. Sama ada dalam penghantaran data atau pemprosesan data bahagian hadapan atau belakang, kami boleh melakukan penukaran yang sepadan mengikut keperluan sebenar. Perlu diingat bahawa apabila menukar antara XML dan tatasusunan, beri perhatian kepada struktur dan format data untuk mengelakkan ralat yang tidak perlu.
Atas ialah kandungan terperinci Bagaimana untuk menukar php+xml dan tatasusunan antara satu sama lain. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!