【发布时间】:2021-07-19 07:49:33
【问题描述】:
我需要将一个不定深度的数组转换为一个 xml 字符串。我认为递归函数会更好,因为数组的深度不是未知的,并且主要是 3 个级别。这是我到目前为止提出的递归函数
function array2xml($data, $key = ''){
if(!is_array($data)){
return "<".$key.">".$data."</".$key.">";
}
else{
foreach($data as $key => $value){
if(!is_array($value)){
return array2xml($value, $key);
}
else{
return "<".$key.">".array2xml($value)."</".$key.">";
}
}
}
这是初始调用,但它只返回数组中的第一个元素。例如,
echo array2xml([
'students' => [
'names' => [
'frank' => '12',
'jason' => '13',
'beth' => '14'
],
'groups' => [
'yellow' => '165',
'green' => '98'
]
]
]);
返回这个输出
<students><names><frank>12</frank></names></students>
如果有人能修复这个递归函数,让数组中的元素像这样打印出来,将不胜感激
<students>
<names>
<frankDiaz>12</frank>
<jasonVaaz>13</jason>
<bethDoe>14</beth>
</names>
<groups>
<yellow>165</yellow>
</groups>
【问题讨论】: