php數(shù)組轉(zhuǎn)xml使用的函數(shù)是什么

這篇文章主要介紹了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數(shù)組轉(zhuǎn)xml使用的函數(shù)是什么

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)

外貿(mào)網(wǎng)站制作