php转汇编,php xml array 互相转换

function xml2arr($xml)

{

$obj = simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA);

$json = json_encode($obj);

$arr = json_decode($json, true);

return $arr;

}

function arr2xml($root_element_name,$ar)

{

$xml = new \SimpleXMLElement("<?xml version=\"1.0\"?>{$root_element_name}>");

$f = create_function('$f,$c,$a','

foreach($a as $k=>$v) {

if(is_array($v)) {

$ch=$c->addChild($k);

$f($f,$ch,$v);

} else {

$c->addChild($k,$v);

}

}');

$f($f,$xml,$ar);

return $xml->asXML();

}

arr2xml方法有个bug,因为array的下标不能同名,但xml的子元素是可以同名的,如......,peoples里面有多个people元素,此时php声明数组时,下标必须不同,如$peoples['people_1']=[],$peoples['people_2']=[]来创建,而不能$peoples['people']=[],$peoples['people']=[]来定义两个元素,所有在调用arr2xml之后,要将_1或_2之类的下标替换掉,如$xml = preg_replace('/\_\d+\>/','',$xml);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值