我有一个如下数组:
...
array('info' => array(
array(
'key' => $key1,
'value' => $value1
),
array(
'key' => $key2,
'value' => $value2
)
)
);
...
我有如下的XML转换功能:
...
public function createXML($array, $xml = false)
{
if($xml === false){
$xml = new SimpleXMLElement('<info/>');
}
foreach($array as $key => $value){
if(is_array($value)){
$this->createXML($value, $xml->addChild($key));
} else {
$xml->addChild($key, $value);
}
}
return $xml->asXML();
}
...
我正在使用XML:
<Info>
<0>
<Key>$key1</Key>
<Value>$value1</Value>
</0>
<1>
<Key>$key2</Key>
<Value>$value2</Value>
</1>
</Info>
但我希望以下面的格式获取XML:
...
<Info>
<Key>$key1</Key>
<Value>$value1</Value>
</Info>
<Info>
<Key>$key2</Key>
<Value>$value2</Value>
</Info>
...
如何更新createXML函数以便获得上述XML格式?
答案 0 :(得分:0)
问题在于......
if(is_array($value)){
$this->createXML($value, $xml->addChild($key));
} else {
当你知道$value
是一个数组时,你这样做了。这意味着您将在一个<info>
标记下添加所有数据(在您的情况下为2个元素)。由于您没有这两个值的元素名称,因此它将使用您获得的数值。
如果你一次传递一个,你可以在他们自己的元素下添加它们......
if(is_array($value)){
foreach($value as $value2){
$this->createXML($value2, $xml->addChild($key));
}
} else {