注意:在XML元素名称中使用数字不是一个好主意,因此$your_array的键名不应该有数字。
试试这个:
$your_array = array(
'city' => array
(
'0' => array('0' => 'Rd', '1' => 'E'),
'1' => 'B',
'2' => 'P',
'3' => 'R',
'4' => 'S',
'5' => 'G',
'6' => 'C'
),
'dis' => '1.4'
);
下面的函数调用自身(递归),因此它可以处理任意深度的数组。
函数使用三元运算符:
(condition) ? if true action : if false action
...来检查所调用的值是否为数组。
如果它是数组,则调用自身(递归)以进行更深层次的挖掘,如果值不是数组,则将其附加到XML对象上,使用数组键作为元素名称,数组值作为元素值。
function array_to_xml(array $your_array, SimpleXMLElement $xml){
foreach ($arr as $k => $v){
is_array($v) ? array_to_xml($v, $xml->addChild($k)) : $xml->addChild($k, $v);
}
return $xml;
}
$your_xml = $this->array_to_xml($your_array, new SimpleXMLElement(''))->asXML();
现在,您的数组已经转换成了 XML,并存储在 $your_xml 变量中,因此您可以随意使用它。
$your_xml 的输出结果(例如,如果您使用 'echo' 命令)将如下所示:
<根>
<城市>
<0>
<0>路</0>
<1>东</1>
</0>
<1>B</1>
<2>P</2>
<3>R</3>
<4>S</4>
<5>G</5>
<6>C</6>
</城市>
<距离>1.4</距离>
</根>