두 가지 방법의 재귀 변환 배열과 xml
<?php /*simplexml数组和xml转换*/ // 对象转数组:为了更好地找到需要的节点 function toarray($sim){ // 1 先把最外面的object变成数组 $sim=(array)$sim; //如果是对象或者数组,就都递归,运用上面的转变,如果不是这两者之一就pass foreach ($sim as $k => $v) { if ($v instanceof simplexmlelement||is_array($v)) { $sim[$k]=toarray($v); } } return $sim; } $sx=simplexml_load_file('./try.xml'); print_r($sx); print_r(toarray($sx)); // 看源代码可以看到,网页返回是报错 $arr=array('a'=>'111', 'b'=>'2222', 'c'=>array( 'd'=>'hahaha', 'e'=>array( 'what'=>'the x'))); // 数组转xml,新的数组加入到新xml里,,arr to xml function toxml($arr,$node=null){ // 创建新xml文件 if ($node==null) { $simxml=new simpleXMLElement ('<?xml version="1.0" encoding="utf-8"?><root></root>'); }else{ $simxml=$node; } // foreach ($arr as $k => $v) { if (is_array($v)) { // addChild(节点名,内容) // 如果是数组,就要建节点 把这个数组里的东西放进去--》v是个数组, // 大节点名是k,到下一回,把东西放进这个sim-》addchild里 toxml($v,$simxml->addChild($k)); //如果数组键是数字,就要自己给他个标签名,因为直接用数字 会出问题 }else if (is_numeric($k)) { $simxml->addChild('item',$v); }else{ // 不是数组就直接添加子元素 键名-键值 $simxml->addChild($k,$v); } } return $simxml->saveXML(); } header('content-type:text/xml'); echo toxml($arr); ?>
위에서 내용의 측면을 포함하여 XML 및 배열의 변환을 소개했습니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.