Was ist die Funktion zum Konvertieren eines PHP-Arrays in XML?

藏色散人
Freigeben: 2023-03-05 08:50:01
Original
2427 Leute haben es durchsucht

Die Funktion zum Konvertieren von PHP-Arrays in XML ist „arr2xml“. So verwenden Sie sie: Erstellen Sie zunächst eine PHP-Beispieldatei. Definieren Sie dann eine „arr2xml“-Methode andere Funktionen.

Was ist die Funktion zum Konvertieren eines PHP-Arrays in XML?

Empfehlung: „PHP-Video-Tutorial

Die Notwendigkeit, PHP-Gewinner-Arrays in XML zu konvertieren, ist weit verbreitet, und Baidu hat nach verschiedenen Implementierungsmethoden gesucht, aber im Grunde entlehnte Gruppen Einige Komponenten oder etwas. Ich habe selbst eine String-Gruppierungsmethode geschrieben, die mehrdimensionale Arrays unterstützt. Nur als Referenz, bitte teilen Sie uns mit, wenn es Mängel gibt!

rrree

Der erste Parameter ist das Array, das Sie konvertieren möchten. Der zweite optionale Parameter legt fest, ob Sie den hinzufügen müssen.

Testcode:

/**
*   将数组转换为xml
*    @param array $data    要转换的数组
*   @param bool $root     是否要根节点
*   @return string         xml字符串
*    @author Dragondean
*    @url    http://www.cnblogs.com/dragondean*/function arr2xml($data, $root = true){    $str="";    if($root)$str .= "<xml>";    foreach($data as $key => $val){        if(is_array($val)){            $child = arr2xml($val, false);            $str .= "<$key>$child</$key>";
        }else{            $str.= "<$key><![CDATA[$val]]></$key>";
        }
    }    if($root)$str .= "</xml>";    return $str;
}
Nach dem Login kopieren

Das Ergebnis nach der Ausführung des Codes ist:

$arr=array(&#39;a&#39;=>&#39;aaa&#39;,&#39;b&#39;=>array(&#39;c&#39;=>&#39;1234&#39; , &#39;d&#39; => "asdfasdf"));echo arr2xml($arr);
Nach dem Login kopieren

---------------------------------------- ------ ----

Update:

Während des Nutzungsprozesses haben wir festgestellt, dass es Probleme mit der Array-Konvertierung im folgenden Format geben wird:

<xml><a><![CDATA[aaa]]></a><b><c><![CDATA[1234]]></c><d><![CDATA[asdfasdf]]></d></b></xml>
Nach dem Login kopieren

Das konvertierte Ergebnis ist:

array(    &#39;item&#39; => array(        array(            &#39;title&#39; => &#39;qwe&#39;,
            &#39;description&#39; => &#39;rtrt&#39;,
            &#39;picurl&#39; => &#39;sdfsd&#39;,
            &#39;url&#39; => &#39;ghjghj&#39;
        ),        array(            &#39;title&#39; => &#39;jyutyu&#39;,
            &#39;description&#39; => &#39;werwe&#39;,
            &#39;picurl&#39; => &#39;xcvxv&#39;,
            &#39;url&#39; => &#39;ghjgh&#39;
        )
    )
);
Nach dem Login kopieren

Normalerweise ist das oben konvertierte XML das gesamte <0><1> Wir wollen diese Knotenschicht nicht. In PHP darf der Index jedoch nicht denselben Namen und nicht mehrere Elemente haben. Was zu tun?

Ich habe mir eine Möglichkeit überlegt, Elemente wie Element[0], Element[1] zu subskribieren und die Indizes in Form von [] während des Konvertierungsprozesses zu entfernen, um mehrere Elementknoten nebeneinander zu erreichen.

Die geänderte Funktion lautet wie folgt:

<xml>
    <item>
        <0>
            <title>
                <![CDATA[qwe]]>
            </title>
            <description>
                <![CDATA[rtrt]]>
            </description>
            <picurl>
                <![CDATA[sdfsd]]>
            </picurl>
            <url>
                <![CDATA[ghjghj]]>
            </url>
        </0>
        <1>
            <title>
                <![CDATA[jyutyu]]>
            </title>
            <description>
                <![CDATA[werwe]]>
            </description>
            <picurl>
                <![CDATA[xcvxv]]>
            </picurl>
            <url>
                <![CDATA[ghjgh]]>
            </url>
        </1>
    </item></xml>
Nach dem Login kopieren

Dann muss auch das Array, das oben konvertiert werden muss, geändert werden:

function arr2xml($data, $root = true){    $str="";    if($root)$str .= "<xml>";    foreach($data as $key => $val){        //去掉key中的下标[]
        $key = preg_replace(&#39;/\[\d*\]/&#39;, &#39;&#39;, $key);        if(is_array($val)){            $child = arr2xml($val, false);            $str .= "<$key>$child</$key>";
        }else{            $str.= "<$key><![CDATA[$val]]></$key>";
        }
    }    if($root)$str .= "</xml>";    return $str;
}
Nach dem Login kopieren

Die konvertierte XML lautet wie folgt:

$arr1 =array(    &#39;item[0]&#39; => array(            &#39;title&#39; => &#39;qwe&#39;,
            &#39;description&#39; => &#39;rtrt&#39;,
            &#39;picurl&#39; => &#39;sdfsd&#39;,
            &#39;url&#39; => &#39;ghjghj&#39;
        ),
    &#39;item[1]&#39; => array(            &#39;title&#39; => &#39;jyutyu&#39;,
            &#39;description&#39; => &#39;werwe&#39;,
            &#39;picurl&#39; => &#39;xcvxv&#39;,
            &#39;url&#39; => &#39;ghjgh&#39;
        )
);
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWas ist die Funktion zum Konvertieren eines PHP-Arrays in XML?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage