#php #arrays #xml
#php #массивы #xml
Вопрос:
Посмотрите, что он вводит числа и единицу вместо «codDedido». Мне нужно, чтобы он был в формате xml .. но я не знаю, где я ошибаюсь. Я заполнил его следующим образом:
$listaDados[pedido][listItem][0][codItem]=123;
$listaDados[pedido][listItem][1][codItem]=456;
Вот моя функция, :
function array_to_xml2($array, amp;$xml_user_info) {
foreach($array as $key => $value) {
if(is_array($value)) {
if(!is_numeric($key)){
$subnode = $xml_user_info->addChild("$key");
self::array_to_xml2($value, $subnode);
}else{
$subnode = $xml_user_info->addChild("$key");
self::array_to_xml2($value, $subnode);
}
}else{
$xml_user_info->addChild("$key",htmlspecialchars("$value"));
}
}
здесь я называю:
foreach ($listaDados['pedido']['listaPedItem'] as $listaD) {
$teste['listaPedItem'] = $listaD;
self::array_to_xml2($teste,$xml_user_info);
var_dump($listaD);
}
Итак, мне нужно, чтобы это:
<pedido>
<listPedItem>
<codPedido>123</codPedido>
</listPedItem>
<listPedItem>
<codPedido>456</codPedido>
</listPedItem>
</pedido>
Но я не знаю, что он возвращает :
<pedido>
<listPedItem>
<0>
<codPedido>
</0>
<1>
<codPedido>
</1>
</listPedItem>
</pedido>
Комментарии:
1.что такое
$xml_user_info
? Почему вы передаете объект в качестве ссылки? Можете ли вы создать отдельный пример (без$this
self
и т. Д.)2. привет @AterLux, спасибо за ответ.. итак, я делаю:
$xml_user_info = new SimpleXMLElement("<?xml version="1.0"?><pedido></pedido>");
иself::array_to_xml2($listaDados,$xml_user_info);
Ответ №1:
возможно, попробуйте эту функцию с официальной страницы PHP
<?php
function array2XML($arr,$root) {
$xml = new SimpleXMLElement("<?xml version="1.0" encoding="utf-8" ?><{$root}></{$root}>");
$f = create_function('$f,$c,$a','
foreach($a as $v) {
if(isset($v["@text"])) {
$ch = $c->addChild($v["@tag"],$v["@text"]);
} else {
$ch = $c->addChild($v["@tag"]);
if(isset($v["@items"])) {
$f($f,$ch,$v["@items"]);
}
}
if(isset($v["@attr"])) {
foreach($v["@attr"] as $attr => $val) {
$ch->addAttribute($attr,$val);
}
}
}');
$f($f,$xml,$arr);
return $xml->asXML();
}
?>