\r\n"; $xml .= self::arrayToXmlSub($array); $xml .= ""; return $xml; } public static function arrayToXmlSub($array) { if(!is_array($array) || count($array) <= 0) return null; $xml = ""; foreach($array as $key => $val){ if(is_object($val)) $val = self::objectToArray ($val); if(is_array($val)){ if(is_numeric($key)){ $xml .= self::arrayToXmlSub($val); } else { $xml .= "<" . $key .">" . self::arrayToXmlSub($val) ."\r\n"; } } else if(is_numeric($val)){ $xml .= "<" . $key .">" . $val ."\r\n"; } else { $xml .= "<" . $key . ">\r\n"; } } return $xml; } public static function xmlToArray($xml) { try{ if(!$xml){ return null; } //禁止引用外部xml实体 libxml_disable_entity_loader(true); @ $res = json_decode(json_encode(simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA)), true); return $res; } catch (\Exception $e){ return false; } } //数组转为对象 public static function arrayToObject($array) { if(!is_array($array)) return null; foreach ($array as $key => $val){ if(is_array($val) || is_object($val)){ $array[$key] = (object)self::arrayToObject($val); } } return $array; } //对象转为数组 public static function objectToArray($object) { if(!is_object($object)) return null; $object = (array)$object; foreach ($object as $key => $val){ if(is_resource($val)){ return null; } if(is_array($val) || is_object($val)){ $array[$key] = (array)self::arrayToObject($val); } } return $object; } public static function arrayToUrlParam($array, $url_encode = true) { $url_param = ""; foreach ($array as $key => $value) { if (is_array($value)) { $list_url_param = ""; foreach ($value as $list_key => $list_value) { if (!is_array($list_value)) $url_param .= $key . "[" . $list_key . "]=" . ($url_encode ? urlencode($list_value) : $list_value) . "&"; } $url_param .= trim($list_url_param, "&") . "&"; } else { $url_param .= $key . "=" . ($url_encode ? urlencode($value) : $value) . "&"; } } return trim($url_param, "&"); } }