Web 開発では、データの保存と送信に XML および配列形式がよく使用されます。 XML はデータの記述やインタラクティブな送信によく使用されるマークアップ言語であり、配列はプログラム内のデータ処理や演算によく使用されるデータ構造です。 PHP 言語では、PHP を XML および配列に変換できます。この変換は非常に便利で高速です。
この記事では、XMLから配列への変換方法、配列からXMLへの変換方法など、PHP、XML、PHPの配列間の相互変換方法を中心に紹介します。
1. PHP と XML 間の相互変換
PHP では、SimpleXML 拡張機能を使用して、PHP と XML 間の相互変換を実現できます。 SimpleXML は、XML ファイル内のデータを処理するための PHP 組み込み拡張機能であり、XML ファイルを PHP オブジェクトまたは配列に変換したり、PHP オブジェクトまたは配列を XML ファイルに変換したりできます。
XML ファイルを PHP 配列に変換するには、SimpleXML 拡張機能の simplexml_load_file 関数を使用する必要があります。 simplexml_load_file 関数は、指定されたパスにある XML ファイルを読み取り、SimpleXMLElement オブジェクトを返し、SimpleXMLElement オブジェクトをトラバースすることによって XML ファイル内の情報を PHP 配列に変換できます。
次は、XML ファイルを 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);
上記のコードを実行すると、出力結果は次のようになります:
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 ) )
に変換するには、配列内のデータを XML の構文規則に従って編成する必要があります。 PHP では、SimpleXMLElement クラスを使用して XML 要素を作成し、foreach ループを使用して配列内のデータを反復処理し、データを XML 要素に 1 つずつ追加して、最後に XML ファイルを指定した場所に出力または保存できます。 SimpleXMLElement オブジェクトの asXML メソッドを通じて場所を取得します。
以下は、PHP 配列を 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;
上記のコードを実行すると、出力結果は次のようになります:
<?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. PHP と配列の変換
PHP では、json_encode 関数と json_decode 関数を使用して PHP を配列に変換できます。 json_encode 関数は、PHP の配列を JSON 形式の文字列に変換し、変換された文字列を返します。json_decode 関数は、JSON 形式の文字列を PHP の配列に変換します。
PHP 配列を JSON 形式の文字列に変換するには、json_encode 関数を使用する必要があります。 json_encode 関数は、PHP の配列を JSON 形式の文字列に変換し、JSON 文字列を表す値を返すことができます。
以下は、PHP 配列を 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;
上記のコードを実行すると、出力結果は次のようになります:
[{"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 形式の文字列を PHP 配列に変換するには、json_decode 関数を使用する必要があります。 json_decode 関数は、JSON 形式の文字列を PHP の配列に変換し、PHP 配列を表す値を返すことができます。
次は、JSON 形式の文字列を 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);
上記のコードを実行すると、出力結果は次のようになります:
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. PHP XML 配列の相互変換
PHP では、SimpleXML 拡張機能と json_encode/json_decode 関数を使用して、PHP、XML、配列間の相互変換を実現できます。具体的には、まず XML ファイルを PHP 配列に変換し、次にその PHP 配列を JSON 形式の文字列に変換できます。同様に、JSON 形式の文字列を PHP 配列に変換してから、その PHP 配列をSimpleXMLElement オブジェクトを取得し、最後に XML ファイルを取得します。
以下は、PHP 配列と 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;
上記のコードを実行すると、出力結果は次のようになります:
<?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>
要約
上記はPHPをXMLと配列に変換する方法で、非常にシンプルで実用的です。フロントエンドまたはバックエンドのデータ送信またはデータ処理において、実際のニーズに応じて対応する変換を実行できます。 XML と配列の間で変換する場合は、不要なエラーを避けるためにデータの構造と形式に注意してください。
以上がphp+xmlと配列を相互に変換する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。