ホームページ > バックエンド開発 > PHPの問題 > php+xmlと配列を相互に変換する方法

php+xmlと配列を相互に変換する方法

PHPz
リリース: 2023-04-26 14:15:57
オリジナル
550 人が閲覧しました

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 ファイルに変換したりできます。

  1. XML ファイルを PHP 配列に変換する

XML ファイルを PHP 配列に変換するには、SimpleXML 拡張機能の simplexml_load_file 関数を使用する必要があります。 simplexml_load_file 関数は、指定されたパスにある XML ファイルを読み取り、SimpleXMLElement オブジェクトを返し、SimpleXMLElement オブジェクトをトラバースすることによって XML ファイル内の情報を PHP 配列に変換できます。

次は、XML ファイルを PHP 配列に変換するコード例です:

$xmlStr = <<<XML
<?xml version=&#39;1.0&#39;?>
<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
        )

)
ログイン後にコピー
ログイン後にコピー
  1. Convert PHP 配列 PHP 配列を XML ファイル

に変換するには、配列内のデータを 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 の配列に変換します。

  1. PHP 配列を JSON 形式の文字列に変換する

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"}]
ログイン後にコピー
  1. JSON 形式の文字列を PHP 配列に変換します

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=&#39;1.0&#39;?>
<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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート