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();
}