php數組如何轉換xml?
php陣列轉xml的方法:1、不使用回呼函數,程式碼為【function outXmlFile($file, $xml_str)】;2、回呼方法,產生不規則的xml,程式碼為【$this ->arrTo_Xml($value, $key)】。
php陣列轉xml的方法:
方法一:原生的寫法
<?php /** * 简单原生的数组转为xml * @param $arr * @return string */ function arrayToXml($arr) { $xml = "<root>"; foreach ($arr as $key => $val) { if (is_array($val)) { $xml .= "<" . $key . ">" . arrayToXml($val) . "</" . $key . ">"; } else { $xml .= "<" . $key . ">" . $val . "</" . $key . ">"; } } $xml .= "</root>"; return $xml; } $arr = array(); $arr["url"] = array( 1 => array( "loc" => "http://www.php.com/refessories/ind_10-gen_3/", "lastmod" => "2018/10/09" ), 2 => array( "loc" => "http://www.php.com/refeessories/ind_12-gen_5/", "lastmod" => "2018/10/09" ), 3 => array( "loc" => "http://www.php.com/refeessories/ind_15-gen_5/", "lastmod" => "2018/10/09" ), ); $simple_arrtoxml = arrayToXml($arr); var_dump($simple_arrtoxml); exit;
方法二:寫死的方法,沒有使用回呼函數
/** * 把特定格式的数组转化成XML * * @param $arr array 数组格式如下 * @param string $rootNodeName 最外层节点(根节点) * @return string */ function arrToXml($arr, $rootNodeName = 'index') { $Dom = new DOMDocument('1.0', 'utf-8'); // 根节点 $root_node = $Dom->createElement($rootNodeName); $Dom->appendChild($root_node); //第一个节点 $firstNodeName = key($arr); //循环节点 foreach ($arr[$firstNodeName] as $value) { $firstNode = $Dom->createElement($firstNodeName); $root_node->appendChild($firstNode); $locNode = $Dom->createElement("loc", $value["loc"]); $firstNode->appendChild($locNode); if ($rootNodeName == 'sitemapindex') { $lastmodNode = $Dom->createElement('lastmod', $value["lastmod"]); } else { $lastmodNode = $Dom->createElement('lastmod'); $cdata = $Dom->createCDATASection($value["lastmod"]);// 生成日期特殊形式:<![CDATA[2017/09/29]]> $lastmodNode->appendChild($cdata); } $firstNode->appendChild($lastmodNode); } $Dom->formatOutput = true;//将特殊形式输出出来 $result = $Dom->saveXML(); return $result; } /** * 输出xml数据到xml文件中 * * @param $file string 文件名 * @param $xml_str * @return bool|int */ function outXmlFile($file, $xml_str) { echo "生成 ", $file, " 成功!", PHP_EOL; return file_put_contents($file, $xml_str); } /******************** 写死的方法,没有使用回调函数 **************************/ $result = array(); $result["url"] = array( 1 => array( "loc" => "http://www.php.com/refessories/ind_10-gen_3/", "lastmod" => "2018/10/09" ), 2 => array( "loc" => "http://www.php.com/refeessories/ind_12-gen_5/", "lastmod" => "2018/10/09" ), 3 => array( "loc" => "http://www.php.com/refeessories/ind_15-gen_5/", "lastmod" => "2018/10/09" ), ); $res = arrToXml($result, "ulrset"); // outXmlFile('www.baidu.com/sitic.xml', $res); // 自己选择要保存的位置 var_dump($res); exit; // ========================================================== // 结果: /** * <?xml version="1.0" encoding="utf-8"?> * <ulrset> * <url> * <loc>http://www.php.com/refessories/ind_10-gen_3/</loc> * <lastmod><![CDATA[2018/10/09]]></lastmod> * </url> * <url> * <loc>http://www.php.com/refeessories/ind_12-gen_5/</loc> * <lastmod><![CDATA[2018/10/09]]></lastmod> * </url> * <url> * <loc>http://www.php.com/refeessories/ind_15-gen_5/</loc> * <lastmod><![CDATA[2018/10/09]]></lastmod> * </url> * </ulrset> */
方法三: 回呼方法,可以產生不規則的xml ( 方法調用,與方法二一樣)
/** * @param array $arr 数组 * @param int $dom Document * @param int $item * @return string */ function arr_to_xml($arr, $dom = 0, $item = 0) { if (!$dom) { $dom = new DOMDocument("1.0"); } if (!$item) { $item = $dom->createElement("root");// 根节点 $dom->appendChild($item); } foreach ($arr as $key => $val) { $itemx = $dom->createElement(is_string($key) ? $key : "item"); $item->appendChild($itemx); if (!is_array($val)) { $text = $dom->createTextNode($val);// 创建一个文本节点 $itemx->appendChild($text); } else { arr_to_xml($val, $dom, $itemx); // 自己调用自己 } } return $dom->saveXML(); } // 或者下面的这种回调方法 /** * 把特定格式的数组转化成XML * * @param $arr * @param string $nodeName xml子节点 * @param string $element * @param string $Dom * @return string */ function arrTo_Xml($arr, $nodeName = 'index', $element = '', $Dom = '') { $Dom = empty($Dom) ? new DOMDocument('1.0', 'utf-8') : $Dom; if ($element == '') { $data = $Dom->createElement($nodeName); $Dom->appendChild($data); } else { $data = $element; } foreach ($arr as $key => $value) { if (is_array($value)) { if (!is_numeric($key)) { $element = $Dom->createElement($key); $data->appendChild($element); } $this->arrTo_Xml($value, $key, $element, $Dom);// 自己调用自己 } else { if ($key == "lastmod") { $element = $Dom->createElement($key); $cdata = $Dom->createCDATASection($value); // 生成日期特殊形式:<![CDATA[2017/09/29]]> $element->appendChild($cdata); } else { $element = $Dom->createElement($key, $value);// 用createElement创建出来的都是一行(例如:<username>xingmimng</username> } $data->appendChild($element);// 创建的一行放在哪个 xml的节点下 } } $Dom->formatOutput = true;// 输出特殊形式 $result = $Dom->saveXML(); unset($Dom);// 释放资源 return $result; } // 数据结构 $result = array(); $result["url"] = array( 1 => array( "loc" => "http://www.php.com/refessories/ind_10-gen_3/", "lastmod" => "2018/10/09" ), 2 => array( "loc" => "http://www.php.com/refeessories/ind_12-gen_5/", "lastmod" => "2018/10/09" ), 3 => array( "loc" => "http://www.php.com/refeessories/ind_15-gen_5/", "lastmod" => "2018/10/09" ), ); /************************************************************************************ * 附加: xml转为array *************************************************************************************/ /** * 将xml转为array * @param string $xml * return array */ function xml_to_array($xml) { if (!$xml) { return false; } //将XML转为array //禁止引用外部xml实体 libxml_disable_entity_loader(true); $data = json_decode(json_encode(simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA)), true); return $data; }
相關學習推薦:PHP程式設計從入門到精通
以上是php數組如何轉換xml?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

JWT是一種基於JSON的開放標準,用於在各方之間安全地傳輸信息,主要用於身份驗證和信息交換。 1.JWT由Header、Payload和Signature三部分組成。 2.JWT的工作原理包括生成JWT、驗證JWT和解析Payload三個步驟。 3.在PHP中使用JWT進行身份驗證時,可以生成和驗證JWT,並在高級用法中包含用戶角色和權限信息。 4.常見錯誤包括簽名驗證失敗、令牌過期和Payload過大,調試技巧包括使用調試工具和日誌記錄。 5.性能優化和最佳實踐包括使用合適的簽名算法、合理設置有效期、

字符串是由字符組成的序列,包括字母、數字和符號。本教程將學習如何使用不同的方法在PHP中計算給定字符串中元音的數量。英語中的元音是a、e、i、o、u,它們可以是大寫或小寫。 什麼是元音? 元音是代表特定語音的字母字符。英語中共有五個元音,包括大寫和小寫: a, e, i, o, u 示例 1 輸入:字符串 = "Tutorialspoint" 輸出:6 解釋 字符串 "Tutorialspoint" 中的元音是 u、o、i、a、o、i。總共有 6 個元

靜態綁定(static::)在PHP中實現晚期靜態綁定(LSB),允許在靜態上下文中引用調用類而非定義類。 1)解析過程在運行時進行,2)在繼承關係中向上查找調用類,3)可能帶來性能開銷。

本教程演示瞭如何使用PHP有效地處理XML文檔。 XML(可擴展的標記語言)是一種用於人類可讀性和機器解析的多功能文本標記語言。它通常用於數據存儲

PHP的魔法方法有哪些? PHP的魔法方法包括:1.\_\_construct,用於初始化對象;2.\_\_destruct,用於清理資源;3.\_\_call,處理不存在的方法調用;4.\_\_get,實現動態屬性訪問;5.\_\_set,實現動態屬性設置。這些方法在特定情況下自動調用,提升代碼的靈活性和效率。

PHP和Python各有優勢,選擇依據項目需求。 1.PHP適合web開發,尤其快速開發和維護網站。 2.Python適用於數據科學、機器學習和人工智能,語法簡潔,適合初學者。

PHP是一種廣泛應用於服務器端的腳本語言,特別適合web開發。 1.PHP可以嵌入HTML,處理HTTP請求和響應,支持多種數據庫。 2.PHP用於生成動態網頁內容,處理表單數據,訪問數據庫等,具有強大的社區支持和開源資源。 3.PHP是解釋型語言,執行過程包括詞法分析、語法分析、編譯和執行。 4.PHP可以與MySQL結合用於用戶註冊系統等高級應用。 5.調試PHP時,可使用error_reporting()和var_dump()等函數。 6.優化PHP代碼可通過緩存機制、優化數據庫查詢和使用內置函數。 7

在PHP8 中,match表達式是一種新的控制結構,用於根據表達式的值返回不同的結果。 1)它類似於switch語句,但返回值而非執行語句塊。 2)match表達式使用嚴格比較(===),提升了安全性。 3)它避免了switch語句中可能的break遺漏問題,增強了代碼的簡潔性和可讀性。
