Rumah > pembangunan bahagian belakang > tutorial php > Bagaimana untuk Menukar Objek SimpleXML kepada Array dengan Cekap dan Mengekalkan Atribut?

Bagaimana untuk Menukar Objek SimpleXML kepada Array dengan Cekap dan Mengekalkan Atribut?

Mary-Kate Olsen
Lepaskan: 2024-10-27 08:11:02
asal
323 orang telah melayarinya

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

Menukar Objek SimpleXML kepada Tatasusunan: Pendekatan yang Lebih Cekap

Menukar objek SimpleXML kepada tatasusunan boleh berguna untuk memanipulasi data XML dengan lebih cekap. Walau bagaimanapun, kaedah yang diterangkan dalam soalan awal, yang melibatkan pengekodan dan penyahkodan JSON, boleh menyusahkan. Berikut ialah pendekatan yang dipertingkatkan untuk mencapai perkara yang sama:

function xmlstring2array($string) {

$xml = simplexml_load_string($string);
return xml2array($xml);
Salin selepas log masuk

}

function xml2array($xmlObject) {

foreach ((array) $xmlObject as $index => $node) {
    if (is_object($node)) {
        $out[$index] = xml2array($node);
    } else {
        $out[$index] = $node;
    }
}
return $out;
Salin selepas log masuk

}

Fungsi yang telah disemak ini, xml2array(), melelar secara rekursif melalui objek SimpleXML, menukar nod kepada tatasusunan sambil mengekalkan strukturnya. Ia mengelakkan pengekodan dan penyahkodan JSON di atas kepala, menjadikannya lebih cekap dan mantap.

Fungsi asal kehilangan atribut apabila menukar XML kepada tatasusunan. Walau bagaimanapun, anda boleh mengekalkan atribut dengan menggunakan kaedah atribut() SimpleXML dalam gelung xml2array():

foreach ((array) $xmlObject sebagai $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;
    }
}
...
Salin selepas log masuk

}

Dengan memasukkan penambahbaikan ini, anda boleh menukar objek SimpleXML kepada tatasusunan dengan lebih cekap, mengekalkan kedua-dua struktur dan atribut.

Atas ialah kandungan terperinci Bagaimana untuk Menukar Objek SimpleXML kepada Array dengan Cekap dan Mengekalkan Atribut?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan