Ich versuche, ein XML-Element aus einem Array in PHP mit einem Beispiel, das an anderer Stelle auf dieser Website veröffentlicht wurde, zu erstellen. Die XML-Zeichenfolge wird wie erwartet erstellt, die Knoten und ihre Werte werden jedoch umgekehrt. Zum Beispiel:XML-Knoten und Werte mit SimpleXMLElement und array_walk() umgekehrt
$params = array(
"email" => '[email protected]'
,"pass" => '123456'
,"pass-conf" => '123456'
);
$xml = new SimpleXMLElement('<root/>');
array_walk_recursive($params, array($xml, 'addChild'));
echo $xml->asXML();
Nun, was ich erwarte, ist zu zurückgegeben werden:
<?xml version="1.0"?>
<root>
<email>[email protected]</email>
<pass>123456</pass>
<pass-conf>123456</pass-conf>
</root>
Doch was halten I ist die Knotennamen als Werte und Werte als Knotennamen bekommen:
<?xml version="1.0"?>
<root>
<[email protected]>email</[email protected]>
<123456>pass</123456>
<123456>pass-conf</123456>
</root>
Ich habe getestet, den Schlüssel mit dem Wert im $params
Array zu wechseln, aber das scheint wie ein fauler Hack für mich. Ich glaube, das Problem liegt in meinem Rückruf in array_walk_recursive
, aber ich bin mir nicht sicher, wie genau es funktioniert. Ich bin offen für Empfehlungen zu besseren Möglichkeiten, ein PHP-Array in XML zu konvertieren. Ich habe das gerade versucht, weil es einfach und nicht gewunden zu sein schien. (Haha ..)
[ 'array_walk_recursive'] (http://php.net/manual/en/function.array-walk-recursive.php) ~ * "In der Regel übernimmt Callback zwei Parameter. Der ** - Wert des Array-Parameters ist der erste ** und der ** Schlüssel/Index-Sekunde **. *". ['SimpleXMLElement :: addChild'] (http://php.net/manual/de/simplexmlelement.addchild.php) ~ *" addChild (** string $ name ** [, ** string $ value ** [, Zeichenfolge $ Namespace]]) "* – Phil