這篇文章主要介紹了php數(shù)組轉(zhuǎn)xml使用的函數(shù)是什么,具有一定借鑒價(jià)值,需要的朋友可以參考下。希望大家閱讀完這篇文章后大有收獲。下面讓小編帶著大家一起了解一下。
目前成都創(chuàng)新互聯(lián)公司已為超過千家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)絡(luò)空間、網(wǎng)站托管運(yùn)營、企業(yè)網(wǎng)站設(shè)計(jì)、青田網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。
php數(shù)組轉(zhuǎn)xml的函數(shù)是“arr2xml”,其使用方法:首先創(chuàng)建一個(gè)php示例文件;然后定義一個(gè)“arr2xml”方法;接著通過foreach語句以及“preg_replace”等函數(shù)將數(shù)組轉(zhuǎn)為xml即可。
PHP中獎(jiǎng)數(shù)組轉(zhuǎn)為xml的需求是常見的,而且實(shí)現(xiàn)方法也有很多種,百度找了一下各種實(shí)現(xiàn)方法,但是基本是借組一些組件啥的。我就自己寫了一個(gè)字符串拼組的方法,支持多維數(shù)組。僅供參考,不足之處敬請不吝賜教!
/** * 將數(shù)組轉(zhuǎn)換為xml * @param array $data 要轉(zhuǎn)換的數(shù)組 * @param bool $root 是否要根節(jié)點(diǎn) * @return string xml字符串 * @author Dragondean * @url http://www.cnblogs.com/dragondean*/function arr2xml($data, $root = true){ $str=""; if($root)$str .= "<xml>"; foreach($data as $key => $val){ if(is_array($val)){ $child = arr2xml($val, false); $str .= "<$key>$child</$key>"; }else{ $str.= "<$key><![CDATA[$val]]></$key>"; } } if($root)$str .= "</xml>"; return $str; }
上面是實(shí)現(xiàn)的方法,第一個(gè)參數(shù)是你要轉(zhuǎn)換的數(shù)組,第二個(gè)可選參數(shù)設(shè)定是否需要加<xml>根節(jié)點(diǎn),默認(rèn)是需要的。
測試代碼:
$arr=array('a'=>'aaa','b'=>array('c'=>'1234' , 'd' => "asdfasdf"));echo arr2xml($arr);
代碼執(zhí)行后的結(jié)果為:
<xml><a><![CDATA[aaa]]></a><b><c><![CDATA[1234]]></c><d><![CDATA[asdfasdf]]></d></b></xml>
---------------------- ----------
更新:
在使用過程中發(fā)現(xiàn)下面格式的數(shù)組轉(zhuǎn)換會(huì)出現(xiàn)問題:
array( 'item' => array( array( 'title' => 'qwe', 'description' => 'rtrt', 'picurl' => 'sdfsd', 'url' => 'ghjghj' ), array( 'title' => 'jyutyu', 'description' => 'werwe', 'picurl' => 'xcvxv', 'url' => 'ghjgh' ) ) );
轉(zhuǎn)換出來的結(jié)果是:
<xml> <item> <0> <title> <![CDATA[qwe]]> </title> <description> <![CDATA[rtrt]]> </description> <picurl> <![CDATA[sdfsd]]> </picurl> <url> <![CDATA[ghjghj]]> </url> </0> <1> <title> <![CDATA[jyutyu]]> </title> <description> <![CDATA[werwe]]> </description> <picurl> <![CDATA[xcvxv]]> </picurl> <url> <![CDATA[ghjgh]]> </url> </1> </item></xml>
通常情況下,上面轉(zhuǎn)換出來的xml整<0><1>那層節(jié)點(diǎn)我們是不要的。但是在php中下標(biāo)有不能同名,不能有多個(gè)item。怎么辦呢?
我想了一個(gè)辦法就是給item下下標(biāo),比如item[0],item[1],在轉(zhuǎn)換過程中在去掉[]形式的下標(biāo),實(shí)現(xiàn)多個(gè)item節(jié)點(diǎn)并排。
函數(shù)修改后如下:
function arr2xml($data, $root = true){ $str=""; if($root)$str .= "<xml>"; foreach($data as $key => $val){ //去掉key中的下標(biāo)[] $key = preg_replace('/\[\d*\]/', '', $key); if(is_array($val)){ $child = arr2xml($val, false); $str .= "<$key>$child</$key>"; }else{ $str.= "<$key><![CDATA[$val]]></$key>"; } } if($root)$str .= "</xml>"; return $str; }
那么上面需要轉(zhuǎn)換的數(shù)組也需要跟著變動(dòng)一下:
$arr1 =array( 'item[0]' => array( 'title' => 'qwe', 'description' => 'rtrt', 'picurl' => 'sdfsd', 'url' => 'ghjghj' ), 'item[1]' => array( 'title' => 'jyutyu', 'description' => 'werwe', 'picurl' => 'xcvxv', 'url' => 'ghjgh' ) );
轉(zhuǎn)換后的xml如下:
<xml> <item> <title> <![CDATA[qwe]]> </title> <description> <![CDATA[rtrt]]> </description> <picurl> <![CDATA[sdfsd]]> </picurl> <url> <![CDATA[ghjghj]]> </url> </item> <item> <title> <![CDATA[jyutyu]]> </title> <description> <![CDATA[werwe]]> </description> <picurl> <![CDATA[xcvxv]]> </picurl> <url> <![CDATA[ghjgh]]> </url> </item></xml>
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享php數(shù)組轉(zhuǎn)xml使用的函數(shù)是什么內(nèi)容對大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,遇到問題就找創(chuàng)新互聯(lián),詳細(xì)的解決方法等著你來學(xué)習(xí)!
分享題目:php數(shù)組轉(zhuǎn)xml使用的函數(shù)是什么
URL標(biāo)題:http://muchs.cn/article10/gheddo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開發(fā)、網(wǎng)站排名、品牌網(wǎng)站制作、關(guān)鍵詞優(yōu)化、企業(yè)網(wǎng)站制作、微信小程序
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)