xml、json、数组、对象格式转换

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 = "";
    foreach ($arr as $key=>$val){
        if(is_array($val)){
            $xml.="<".$key.">".arrayToXml($val)."";
        }else{
            $xml.="<".$key.">".$val."";
        }
    }
    $xml.="";
    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();
}

你可能感兴趣的:(xml、json、数组、对象格式转换)