我有两个数组,下面是第一个:
Array
(
[0] => BWY DL
[1] => SP_GPON
)
//Array 1这是最后一个:
Array
(
[0] => Two Way
[1] => Ultimated
)
//Array 2它们都将被转换为XML。我想要的格式:
<data>
<citem>BWY DL</citem> //from array 1, array[0]
<desc>Two Way</desc> //from array 2, array[0]
</data>
<data>
<citem>SP_GPON</citem> //from array 1, array[1]
<desc>Ultimated</desc> //from array 2, array[1]
</data>我的转换代码:
$xml = new SimpleXMLElement('<data/>');
array_walk_recursive($value, array ($xml, 'addChild'));
array_walk_recursive($desc, array ($xml, 'addChild'));
$output=$xml->asXML();
print_r($output); 但它提供了:
<?xml version="1.0"?>
<data>
<BWY DL>0</BWY DL>
<Two Way>0</Two Way>
<SP_GPON>1</SP_GPON>
<Ultimated>1</Ultimated>
</data>我不知道怎么把它们设置成格式。希望有人能帮我。谢谢。
发布于 2015-01-20 08:52:55
我不知道它是否适合你的要求。如果您的数组是固定长度的,并且格式总是相同的:
function convert($array) {
$format = "<data><citem>%s</citem><desc>%s</desc></data>";
return sprintf($format, $array[0], $array[1]);
}因此,如果您有这样的数组:$array1 = array("citem1", "desc1"); $array2 = array("citem2", "desc2");
echo convert($array1); // <data><citem>citem1</citem><desc>desc1</desc></data>
echo convert($array2); // <data><citem>citem2</citem><desc>desc2</desc></data>希望能帮上忙。
发布于 2015-01-20 15:39:57
一个简单的解决方案是一个for循环,它不专注于组合数组或利用本机数组函数。
$xml = '';
$format = '<data><citem>%s</citem><desc>%s</desc></data>';
$count = count($array1);
for ($i = 0; $i < $count; ++$i) {
$xml = sprintf($format, $array1[$i], $array2[$i]);
}
echo $xml;注:--这假定数组的长度相同。
https://stackoverflow.com/questions/28037529
复制相似问题