多次元配列を XML 文字列に変換することは、データ処理における一般的なタスクです。次の配列について考えてみましょう:
$nodes = array( "parent node", "parent node", array( "child node", "child node", array( "grand child node", "grand child node" ) ) );
目的は、それを次の構造に似た XML 文字列に変換することです:
<node> <node>parent node</node> <node>parent node</node> <node> <node>child node</node> <node>child node</node> <node> <node>grand child node</node> <node>grand child node</node> </node> </node> </node>
再帰関数実行可能なアプローチを提供する場合、場合によっては反復的なソリューションの方が効率的になる場合があります。イテレータを使用した例を次に示します。
class TranformArrayIterator extends RecursiveIteratorIterator { ... // Implementation omitted for brevity }
このカスタム イテレータにより、次のような反復プロセスのカスタム制御が可能になります。
反復子を使用するには:
$iterator = new TranformArrayIterator(new RecursiveArrayIterator($nodes)); foreach($iterator as $val) { echo $val; }
の場合XML 生成をより細かく制御できるため、XMLWriter をコラボレータとして使用できます。
class TranformArrayIterator extends RecursiveIteratorIterator { ... // Implementation omitted for brevity } $xmlWriter = new XmlWriter; ... // Configuration and initialization of XMLWriter omitted $iterator = new TranformArrayIterator( $xmlWriter, new RecursiveArrayIterator($nodes) );
このシナリオでは、イテレータは XMLWriter に直接アクセスできるため、生成された XML 構造をきめ細かく制御できます。
どちらの反復アプローチも、多次元配列を XML 文字列に変換する効率的な方法を提供します。具体的な選択は、XML 出力に対する必要な制御レベルによって異なります。
以上がXML 変換のために多次元配列を効率的に反復する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。