一:代碼:
<?php
//************************test***************************
$vararray = array(
"name" => array("alen", "andy", "tom"),
"cuntry" => array("china","japan","english"),
"number" => array(1,2,3, array(11,22,33))
);
$pp = toXml($vararray,"gb2312");
echo $pp;
/**
*把給定的數組轉化成一個xml字串
*
* @author [yans@tks-it.com.cn]
* @param $arrays :要轉換的數組
* @param $encoding:xml檔案的編碼
* @return string
*/
function toXml($arrays,$encoding='')
{
// 數組檢測
if(!is_array($arrays))
{
echo "<font color='red'>$arrays is not a array!</font>";
return false;
}
$xmlstr = '';
// xml檔案編碼設定
if($encoding=='')
{
$xmlstr .='<?xml version="1.0" encoding="utf-8" ?>';
}
else
{
$xmlstr .='<?xml version="1.0" encoding="';
$xmlstr .=$encoding;
$xmlstr .='" ?>';
}
$xmlstr .='<root>';
// 調用遍曆數組函數
$xmlstr .= traversal($arrays);
$xmlstr .='</root>';
return $xmlstr;
}
/**
*遍曆數組,成一個xml片段字串
*
* @author [yans@tks-it.com.cn]
* @param $arr :要遍曆的數組
* @return string
*/
function traversal($arr)
{
$arrString = '';
while($newArr = each($arr))
{
$arrString .= "<$newArr[0]>";
if(is_array($newArr[1]))
{
$tempString = traversal($newArr[1]);
$arrString .= $tempString;
}
else
{
$arrString .= "$newArr[1]";
}
$arrString .= "</$newArr[0]>";
}
return $arrString;
}
?>
二:執行的結果:(結果已經手動調整,便於觀察)
<?xml version="1.0" encoding="gb2312" ?>
<root>
<name>
<0>alen</0>
<1>andy</1>
<2>tom</2>
</name>
<cuntry>
<0>china</0>
<1>japan</1>
<2>english</2>
</cuntry>
<number>
<0>1</0>
<1>2</1>
<2>3</2>
<3>
<0>11</0>
<1>22</1>
<2>33</2>
</3>
</number>
</root>
三:備忘:
注意:xml的標籤是以底線和字母開頭的,且不能又xml字樣的字串!