首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP 將陣列轉換為 XML 的實用方法與程式碼範例

     編輯:PHP 綜合知識

在 PHP 開發中,將陣列資料轉換為 XML 格式是常見需求,特別是在 API 串接或資料交換場景。本文提供一個完整的自訂函數 array_Xml(),能夠遞迴處理多維陣列,並正確產生符合標準的 XML 結構。

核心程式碼實作

<?php
$elementLevel = 0;

function array_Xml($array, $keys = '') {
    global $elementLevel;
    
    if (!is_array($array)) {
        if ($keys == '') {
            return $array;
        } else {
            return "\n<$keys>" . $array . "</$keys>\n";
        }
    } else {
        $text = '';
        foreach ($array as $key => $value) {
            $haveTag = true;
            if (is_numeric($key)) {
                $key = $keys;
                $haveTag = false;
            }
            
            if ($elementLevel == 0) {
                $startElement = "<$key>";
                $endElement = "</$key>";
            }
            
            $text .= $startElement;
            
            if (!$haveTag) {
                $elementLevel++;
                $text .= "<$key>" . array_Xml($value, $key) . "</$key>\n";
            } else {
                $elementLevel++;
                $text .= array_Xml($value, $key);
            }
            
            $text .= $endElement;
        }
        return $text;
    }
}

// 測試資料範例
$array = array(
    "employees" => array(
        "employee" => array(
            array("name" => "name one", "position" => "position one"),
            array("name" => "name two", "position" => "position two"),
            array("name" => "name three", "position" => "position three")
        )
    )
);

echo array_Xml($array);
?>

程式碼運作原理解析

  • 遞迴處理:函數透過 $elementLevel 全域變數追蹤巢狀層級,確保標籤正確嵌套。
  • 鍵值判斷:數字索引鍵會被視為重複元素(如多筆 employee),字串鍵則作為 XML 標籤名稱。
  • 純量值處理:非陣列值直接包裹在對應標籤中輸出。

輸出結果範例

<employees>
<employee>
<name>name one</name>
<position>position one</position>
</employee>
<employee>
<name>name two</name>
<position>position two</position>
</employee>
<employee>
<name>name three</name>
<position>position three</position>
</employee>
</employees>

延伸應用建議

實際專案中,建議考慮使用 PHP 內建的 DOMDocument 或 SimpleXMLElement 類別,能提供更健壯的 XML 產生、驗證與編碼處理(特別是 UTF-8 與特殊字元轉義)。若資料量大,亦可評估 XMLWriter 串流式寫入以節省記憶體。

更多 PHP XML 操作技巧,請參考專題:《PHP 針對 XML 檔案操作技巧總結》、《PHP 陣列操作技巧大全》。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved