PHP配列をXMLに変換しても元に戻すことはできません
PHP は、Web 開発でデータを取得して処理するために使用される非常に強力なプログラミング言語です。 XML は、Web 上でデータを保存および送信するために使用されるマークアップ言語です。 PHP では、配列をデータ構造として使用してデータを保存し、それを XML 形式に変換できます。ただし、XML を PHP 配列に変換し直すときに問題が発生する場合があります。次に、この問題を調査し、解決策を提供します。
1. 配列から XML
PHP では、配列を XML 形式に変換するのは非常に簡単です。配列をループし、PHP 組み込み関数を使用して XML に変換するだけです。サンプル コードは次のとおりです:
<?php $data = array( 'name' => 'John', 'age' => 30, 'gender' => 'male' ); $xml = new SimpleXMLElement('<data/>'); array_walk_recursive($data, array($xml, 'addChild')); echo $xml->asXML(); ?>
出力:
<?xml version="1.0"?> <data> <name>John</name> <age>30</age> <gender>male</gender> </data>
SimpleXMLElement クラスを使用して、新しい XML ドキュメントを作成できます。次に、配列データを XML タグに追加します。
2. XML から配列への変換
XML を PHP 配列に変換し直すのは比較的面倒です。 PHP 組み込み関数はこの機能をサポートしていません。ただし、SimpleXML 拡張機能は、XML を解析してオブジェクトに変換する方法を提供します。このオブジェクトでは、プロパティ名を使用してその値を取得できます。たとえば、サンプル XML ドキュメントを次に示します。
<?xml version="1.0"?> <data> <name>John</name> <age>30</age> <gender>male</gender> </data>
これを PHP 配列に変換できます。
出力:
array(3) { ["name"]=> string(4) "John" ["age"]=> string(2) "30" ["gender"]=> string(4) "male" }
simplexml_load_string 関数を使用して、 XML 文字列を SimpleXML オブジェクトに変換し、PHP の組み込み json_encode 関数を使用して JSON 文字列に変換します。最後に、 json_decode 関数を使用して、JSON 文字列を配列に変換します。
3. XML を配列に変換する際の問題
XML を PHP 配列に変換する際に問題が発生する場合は、SimpleXML オブジェクトの属性名に特殊文字が含まれていることが原因である可能性があります。たとえば、次はサンプル XML ドキュメントです:
<?xml version="1.0"?> <data> <company-name>ABC Inc.</company-name> <employees> <employee id="1">John</employee> <employee id="2">Mike</employee> </employees> </data>
次は、この XML を PHP 配列に変換するサンプル コードです:
出力:
array(2) { ["company-name"]=> string(8) "ABC Inc." ["employees"]=> array(1) { ["employee"]=> array(2) { [0]=> string(4) "John" [1]=> string(4) "Mike" } } }
出力では、「employee」は従業員名と属性を含む連想配列ではなく、配列として返されます。これは、プロパティ名にマイナス記号「-」を使用すると、連想配列のキー名が正しくなくなるためです。たとえば、「company-name」を「company_name」に変更して、同じコードを実行できます。次に例を示します。
<?xml version="1.0"?> <data> <company_name>ABC Inc.</company_name> <employees> <employee id="1">John</employee> <employee id="2">Mike</employee> </employees> </data>
以下は出力です。
array(2) { ["company_name"]=> string(8) "ABC Inc." ["employees"]=> array(1) { ["employee"]=> array(2) { [0]=> string(4) "John" [1]=> string(4) "Mike" } } }
この出力では、「employee」が連想配列として返され、従業員の名前と属性が含まれます。
この問題の解決策は、キー名としてではなく、SimpleXML オブジェクト内のプロパティ名を使用することです。特殊文字と PHP コードを含むサンプル XML ドキュメントを次に示します。
<?xml version="1.0"?> <data> <company-name>ABC Inc.</company-name> <employees> <employee id="1">John</employee> <employee id="2">Mike</employee> </employees> </data>
$value) { if ($value->count() > 0) { foreach ($value as $childKey => $childValue) { $data = array(); foreach ($childValue->attributes() as $attributeName => $attributeValue) { $data["@" . $attributeName] = (string) $attributeValue; } $data["name"] = $childValue->__toString(); if (!isset($result[$key]) || !is_array($result[$key])) { $result[$key] = array(); } array_push($result[$key], $data); } } else { $data = (string) $value; if (isset($result[$key])) { if (!is_array($result[$key])) { $result[$key] = array($result[$key]); } array_push($result[$key], $data); } else { $result[$key] = $data; } } } var_dump($result); ?>
このコードは、SimpleXML オブジェクトのプロパティ名を使用して XML を PHP 配列に変換するメソッドを実装します。この例では、属性を含む XML タグが連想配列に変換されます。たとえば、サンプル XML ドキュメントの出力は次のとおりです。
array(2) { ["company-name"]=> string(8) "ABC Inc." ["employees"]=> array(2) { [0]=> array(2) { ["@id"]=> string(1) "1" ["name"]=> string(4) "John" } [1]=> array(2) { ["@id"]=> string(1) "2" ["name"]=> string(4) "Mike" } } }
出力からわかるように、このメソッドは属性名を正しく解析して連想配列にし、それを他の属性とともに同じ配列に含めます。タグ。
結論:
PHP では、配列を XML に変換し、それを配列に戻すことは比較的簡単です。ただし、特にプロパティ名に特殊文字が含まれている場合、XML を PHP 配列に変換し直すときに問題が発生する可能性があります。 XML は解析時に連想配列に変換されるため、SimpleXML オブジェクトのプロパティ名を使用すると、この問題は解決されます。これらのヒントを理解すれば、PHP で XML 形式と配列形式の間で正常に変換できるようになります。
以上がPHP配列をXMLに変換しても元に戻すことはできませんの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









PHP 8のJITコンピレーションは、頻繁に実行されるコードをマシンコードにコンパイルし、重い計算でアプリケーションに利益をもたらし、実行時間を短縮することにより、パフォーマンスを向上させます。

この記事では、コードインジェクションのような脆弱性を防ぐために、PHPファイルのアップロードを確保することについて説明します。ファイルタイプの検証、セキュアストレージ、およびアプリケーションセキュリティを強化するエラー処理に焦点を当てています。

この記事では、PHPおよび緩和戦略におけるOWASPトップ10の脆弱性について説明します。重要な問題には、PHPアプリケーションを監視および保護するための推奨ツールを備えたインジェクション、認証の壊れ、XSSが含まれます。

この記事では、PHPの対称的および非対称暗号化について説明し、適合性、パフォーマンス、セキュリティの違いを比較しています。対称暗号化はより速く、バルクデータに適していますが、非対称は安全なキー交換に使用されます。

この記事では、不正アクセスを防ぎ、ベストプラクティスの詳細、セキュリティ強化ツールの推奨を防ぐために、PHPで堅牢な認証と承認の実装について説明します。

PHPの準備されたステートメントは、SQLインジェクションを防止し、コンピレーションと再利用を通じてクエリパフォーマンスを改善することにより、データベースのセキュリティと効率を強化します。

この記事では、Token BucketやLeaky BucketなどのアルゴリズムやSymfony/Rate-Limiterなどのライブラリを使用するなど、PHPでAPIレート制限を実装するための戦略について説明します。また、監視、動的に調整されたレートの制限、および手をカバーします

記事では、PHPを使用してデータベースからデータを取得し、手順、セキュリティ対策、最適化手法、およびソリューションを使用した一般的なエラーをカバーしています。
