ホームページ >バックエンド開発 >PHPチュートリアル >SimpleXML オブジェクトを効率的に配列に変換し、属性を保持する方法
SimpleXML オブジェクトの配列への変換: より効率的なアプローチ
SimpleXML オブジェクトの配列への変換は、XML データの操作に役立ちますより効率的に。ただし、最初の質問で説明した方法では、JSON のエンコードとデコードが必要になり、面倒になる可能性があります。同じことを実現するための改良されたアプローチを次に示します。
function xmlstring2array($string) {
$xml = simplexml_load_string($string); return xml2array($xml);
}
function xml2array($xmlObject) {
foreach ((array) $xmlObject as $index => $node) { if (is_object($node)) { $out[$index] = xml2array($node); } else { $out[$index] = $node; } } return $out;
}
この改訂された関数 xml2array() は、SimpleXML オブジェクトを再帰的に反復し、構造を維持しながらノードを配列に変換します。これにより、JSON のエンコードとデコードのオーバーヘッドが回避され、より効率的かつ堅牢になります。
XML を配列に変換するときに、元の関数は属性を失いました。ただし、xml2array():
foreach ((array) $xmlObject as $index => $node) {
... if (is_object($node)) { $out[$index] = xml2array($node); } else if ($node instanceof SimpleXMLElement) { $attrs = $node->attributes(); if (count($attrs) > 0) { $out[$index] = (array) $node; foreach ($attrs as $attrName => $attrValue) { $out[$index][$attrName] = (string) $attrValue; } } else { $out[$index] = (string) $node; } } ...のループ内で SimpleXML のattributes() メソッドを使用することで属性を保持できます。
}
これらの改善を組み込むことで、構造と属性の両方を保持しながら、SimpleXML オブジェクトをより効率的に配列に変換できます。
以上がSimpleXML オブジェクトを効率的に配列に変換し、属性を保持する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。