Php 如何将数组转换为XML,并将整数索引转换为超级节点

Php 如何将数组转换为XML,并将整数索引转换为超级节点,php,xml,Php,Xml,我有一个如下所示的数组: ... array('info' => array( array( 'key' => $key1, 'value' => $value1 ), array( 'key' => $

我有一个如下所示的数组:

...
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();
}
...
。。。
公共函数createXML($array,$xml=false)
{
如果($xml==false){
$xml=新的SimpleXMLElement(“”);
}
foreach($key=>$value的数组){
if(是_数组($value)){
$this->createXML($value,$xml->addChild($key));
}否则{
$xml->addChild($key,$value);
}
}
返回$xml->asXML();
}
...
下面是XML:

<Info>
    <0>
        <Key>$key1</Key>
        <Value>$value1</Value>
    </0>
    <1>
        <Key>$key2</Key>
        <Value>$value2</Value>
    </1>
</Info>

$key1
$value1
$key2
$value2
但我希望得到以下格式的XML:

...
    <Info>
        <Key>$key1</Key>
        <Value>$value1</Value>
    </Info>
    <Info>
        <Key>$key2</Key>
        <Value>$value2</Value>
    </Info>
...
。。。
$key1
$value1
$key2
$value2
...

如何更新createXML函数以获得上述格式的XML?

问题是在这里

if(is_array($value)){
    $this->createXML($value, $xml->addChild($key));
} else {
当您知道
$value
是一个数组时,您可以执行此操作。这意味着您将在一个
标记下添加所有数据(在本例中为两个元素)。由于这两个值没有元素名,它将使用您获得的数值

如果您一次只传递一个,您可以将它们添加到它们自己的元素下

if(is_array($value)){
    foreach($value as $value2){
        $this->createXML($value2, $xml->addChild($key));
    }
} else {

想要的是无效的XML这不是无效的XML,实际上我从第三方API响应中得到了相同的XML,经过一些检查后,我想在其他API请求中发送相同的XML。