xml與陣列的相互轉換——php
阿新 • • 發佈:2018-12-07
xml與陣列的相互轉換——php
1 xml轉換為陣列:
a.xml:
<?xml version="1.0" encoding="utf-8"?>
<root>
<title>
<arr>
<b>
<c>我是c</c>
<c>我是c</c>
</b>
<b>我是b</b>
</arr>
</title>
</root>
a.php:
<?php $xml = simplexml_load_file("a.xml"); // xml物件轉化為陣列 function xml2arr($xml){ $arr = (array) $xml; foreach ($arr as $k => $v) { if(is_object($v)||is_array($v)){ $arr[$k] = xml2arr($v); } } return $arr; } $arr = xml2arr($xml); print_r($arr); ?>
2 陣列轉化為xml:
<?php // 陣列轉化為xml $a = array( 'name'=>'su', 'age'=>22, 'job'=>array( 'title'=>'經理', 'salary'=>888 ), 'team'=>array('小紅','小明') ); // 轉化函式 function arr2xml($arr,$node=null){ if($node===null){ $xml = new SimpleXMLElement('<?xml version="1.0" encoding="utf-8"?><root></root>'); }else{ $xml = $node; } foreach ($arr as $k => $v) { if(is_array($v)){ // 先把key放上去 再放在key上 $_k = $xml->addChild($k); arr2xml($v,$_k); //遞迴 }elseif(is_string($k)){ $xml->addChild($k,$v); //因為xml的鍵不能是數字開頭 所以遇到key是數字的可以自定義鍵改變 }elseif(is_numeric($k)){ $k = 'item'; $xml->addChild($k,$v); } } return $xml->saveXML(); } header('content-type:text/xml'); echo arr2xml($a); ?>