//数组转xml
protected function arrayToXml($arr)
{
$xml = "" ;
foreach ($arr as $key => $val) {
if (is_numeric($val)) {
$xml .= "<" . $key . ">" . $val . " . $key . ">";
} else {
$xml .= "<" . $key . ">" . $val . " . $key . ">";
}
}
$xml .= "";
return $xml;
}
根据您提供的代码,可能会出现以下几个问题导致转换结果不正确:
XML拼接错误:在数组中的每个键值对中,都需要将键作为标签名,而将值作为标签的文本内容。可以使用$key
作为标签名,以及将$val
作为文本内容。
数字字符串问题:在您的代码中,使用is_numeric()
函数来判断值是否为数字,但是在拼接XML时,并没有对数字字符串进行特殊处理。可以考虑使用ctype_digit()
函数来判断是否为纯数字字符串,并使用CDATA标记将其包裹起来,以避免XML解析问题。
多维数组问题:如果数组是多维的,您的代码中只考虑了一维数组的情况。如果数组是嵌套的,您可能需要递归地处理子数组。
下面是修改后的代码示例,可以将数组正确转换为XML:
protected function arrayToXml($arr)
{
$xml = "<xml>";
foreach ($arr as $key => $val) {
if (is_array($val)) {
$xml .= "<" . $key . ">" . $this->arrayToXml($val) . "</" . $key . ">";
} else {
if (is_numeric($val) && !ctype_digit($val)) {
$xml .= "<" . $key . "><![CDATA[" . $val . "]]></" . $key . ">";
} else {
$xml .= "<" . $key . ">" . $val . "</" . $key . ">";
}
}
}
$xml .= "</xml>";
return $xml;
}