ホームページ >バックエンド開発 >PHPチュートリアル >SimpleXML オブジェクトを効率的に配列に変換し、属性を保持する方法

SimpleXML オブジェクトを効率的に配列に変換し、属性を保持する方法

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-10-27 08:11:02324ブラウズ

How to Convert a SimpleXML Object to an Array Efficiently and Preserve Attributes?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。