我有这样的数组:
Array
(
[0] => Array
(
[0] => BWY DL
[1] => SP_GPON
)
[1] => Array
(
[0] => Memo
[1] => Multispeed Network
)
)
我希望用XML格式化它,XML格式如下:
<?xml version="1.0"?>
<data>
<citem>BWY DL</citem> //index [0]
<desc>Memo</desc>// index [0]
</data>
<data>
<citem>SP_GPON</citem> //index [1]
<desc>Multispeed Network</desc> // index[1]
</data>
我尝试使用此代码,但它没有给出正确的结果。这是代码:
function array_to_xml(array $values, SimpleXMLElement $xml)
{
foreach($values as $row) {
$data = $xml->addChild('data');
$data->addChild('citem', $row[0]);
$data->addChild('desc', $row[1]);
}
return $xml;
}
并且上面代码的结果是这样的(错误的结果):
<?xml version="1.0"?>
<data>
<citem>BWY DL</citem>
<desc>SP_GPON</desc>
</data>
<data>
<citem>Memo</citem>
<desc>Multispeed Network</desc>
</data>
答案 0 :(得分:0)
你的数组的结构对我来说有点奇怪,所以让我们看看阵列布局上的调整是否是一个不错的解决方法。
foreach($values[0] as $key=>$value){
$interlaced_values[]=array($value,$values[1][$key]);
}
$values=$interlaced_values;
unset($interlaced_values);
编辑:尝试澄清。
您的初始数组被拆分为两个子数组。一个用于名称,一个用于描述。我将它们网格化,以便每个名称 - 描述对都有1个子数组。
$values[0]
只是您的“名称”子数组,$values[1]
是您的描述子数组。
我只在名称上运行foreach()
,但使用$key
访问了匹配的说明。
如果你在新数组上使用print_r()
或var_export()
,你会看到结果。
$interlaced_values
本来是暂时的。我将它的最终值分配给$ values,因此其余代码可以不加改变地使用。然后我unset()
临时变量来释放内存。