Heim >Backend-Entwicklung >PHP-Problem >Was ist die Funktion zum Konvertieren eines PHP-Arrays in XML?
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.
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!
rrreeDer erste Parameter ist das Array, das Sie konvertieren möchten. Der zweite optionale Parameter legt fest, ob Sie den b2a0af5a8fd26276da50279a1c63a57a 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; }
Das Ergebnis nach der Ausführung des Codes ist:
$arr=array('a'=>'aaa','b'=>array('c'=>'1234' , 'd' => "asdfasdf"));echo arr2xml($arr);
---------------------------------------- ------ ----
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>
Das konvertierte Ergebnis ist:
array( 'item' => array( array( 'title' => 'qwe', 'description' => 'rtrt', 'picurl' => 'sdfsd', 'url' => 'ghjghj' ), array( 'title' => 'jyutyu', 'description' => 'werwe', 'picurl' => 'xcvxv', 'url' => 'ghjgh' ) ) );
Normalerweise ist das oben konvertierte XML das gesamte cd3dfde4a81e47b0e19b5c7a4437feeaf35d6e602fd7d0f0edfa6f7d103c1b57 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>
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('/\[\d*\]/', '', $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; }
Die konvertierte XML lautet wie folgt:
$arr1 =array( 'item[0]' => array( 'title' => 'qwe', 'description' => 'rtrt', 'picurl' => 'sdfsd', 'url' => 'ghjghj' ), 'item[1]' => array( 'title' => 'jyutyu', 'description' => 'werwe', 'picurl' => 'xcvxv', 'url' => 'ghjgh' ) );
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!