XML格式轉換成數組
function xmlToArray($xml)
{
//禁止引用外部xml實體
libxml_disable_entity_loader(true);
$xmlstring = simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA); //這個時候出來的是對象形式
$val = json_decode(json_encode($xmlstring),true); //先把對象轉換成json,然后再解析成數組
return $val;
}
/**
* 將搜索的數組拼接成為url
* 注意:PHP的內置函數http_build_query,會自動將沒有值的參數清除,導致blade模板報錯
* @param $array
* @return string
*/
public function arrayToSearchStr($array)
{
$fields_string = '';
reset($array);
end($array);
$lastKey = key($array);
reset($array);
foreach ($array as $key => $value) {
if ($key != $lastKey) {
$fields_string .= $key . '=' . $value . '&';
} else {
$fields_string .= $key . '=' . $value;
}
}
rtrim($fields_string, '&');
return $fields_string;
}
//數組轉換成對象
public function arrayToObject($e)
{
if (gettype($e) != 'array') return;
foreach ($e as $k => $v) {
if (gettype($v) == 'array' || getType($v) == 'object')
$e[$k] = (object)$this->arrayToObject($v);
}
return (object)$e;
}
//對象轉換成數組
public function objectToArray($e)
{
$e = (array)$e;
foreach ($e as $k => $v) {
if (gettype($v) == 'resource') return;
if (gettype($v) == 'object' || gettype($v) == 'array')
$e[$k] = (array)$this->objectToArray($v);
}
return $e;
}
- 二維數組轉一維數組
//把二維數組合并為一維數組
$newarray = array();
foreach ($datas as $data){
if(empty($data[0])) continue;
$newarray = array_merge($newarray,$data);
}
- 把字符串轉換成想要的數組數據
$str = 'name=long^Bankco=WX';
$arr = explode('^',$str);
//print_r($arr);
$array = array();
foreach ($arr as $k => $v) {
$arrnew = explode('=',$v);
$array[$arrnew[0]] = $arrnew[1];
$array[$arrnew[0]] = $arrnew[1];
}
print_r($array);
數組轉XML
格式
/**
* 將數組轉換為xml
* @param array $data 要轉換的數組
* @param bool $root 是否要根節點
* @return string xml字符串
* @author Dragondean
* @url http://www.cnblogs.com/dragondean
*/
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;
}
function arrayToXml($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 {
arrayToXml($val,$dom,$itemx);
}
}
return $dom->saveXML();
}