PHP中用递归将数组转为xml详解

发布时间:2020-10-27编辑:脚本学堂
在日常应用PHP写脚本程序中,经常遇到数组转xml的需求,实现方法有很多种,但原理基本都是借助一些组件,今天小编教大家自己写字符串拼组的方法,多维数组都完美支持。
 直接上代码 :

/**
*  将数组转换为xml
*  @param array $data  要转换的数组
*  @param bool $root   是否要根节点
*  @return string     xml字符串
*  @author Dragondean
*/
function arr2xml($data, $root = true){
  $str="";
  if($root)$str .= "<xml>";
  foreach($data as $key => $val){
    if(is_array($val)){
      $child = arr2xml($val, false);
      $str .= "<$key>$child</$key>";
    }else{
      $str.= "<$key><![CDATA[$val]]></$key>";
    }
  }
  if($root)$str .= "</xml>";
  return $str;
}

上面是实现的方法,第一个参数是你要转换的数组,第二个是可选参数 设定是否需要加<xml>根节点,默认需要。

代码:

 

$arr=array('a'=>'aaa','b'=>array('c'=>'1234' , 'd' => "asdfasdf"));
echo arr2xml($arr);

代码执行后结果如下:

<xml><a><![CDATA[aaa]]></a><b><c><![CDATA[1234]]></c><d><![CDATA[asdfasdf]]></d></b></xml>