需將 PHP 陣列快速轉為 XML 格式(如 API 回應、資料交換)?Array2xml 類別提供簡單的遞歸轉換,支援數字索引與關聯索引混合陣列,自動處理標籤命名。
<?php
class Array2xml {
var $xml = '';
function array2xml($array, $encoding = 'utf-8') {
$this->xml = '<?xml version="1.0" encoding="'.$encoding.'"?>';
$this->xml .= $this->_array2xml($array);
}
function getXml() {
return $this->xml;
}
function _array2xml($array) {
$xml = '';
foreach ($array as $key => $val) {
// 數字索引轉為 item 標籤並保留 id 屬性
if (is_numeric($key)) {
$key = "item id=\"$key\"";
} else {
// 關聯索引:去除空格後的文字作為標籤名
list($key) = explode(' ', $key);
}
$xml .= "<$key>";
$xml .= is_array($val) ? $this->_array2xml($val) : $val;
list($key) = explode(' ', $key); // 重新取得純標籤名
$xml .= "</$key>";
}
return $xml;
}
}
?>
<?php
$data = [
'user' => [
'id' => 123,
'name' => '張三',
'roles' => ['admin', 'editor']
],
'status' => 'active'
];
$conv = new Array2xml();
$conv->array2xml($data);
echo $conv->getXml();
/* 輸出:
<?xml version="1.0" encoding="utf-8"?>
<user>
<id>123</id>
<name>張三</name>
<roles>
<item id="0">admin</item>
<item id="1">editor</item>
</roles>
</user>
<status>active</status>
*/
?>
<item id="n"> 保留順序正式專案建議使用 PHP 內建 DOMDocument 或成熟庫(如 spatie/array-to-xml),可正確處理編碼、轉義、屬性、命名空間等複雜需求。