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 = "<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();
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容