cxfoot/cxe/wechat/src/Wechat/DataConversion.php
2023-10-27 14:25:12 +08:00

112 lines
3.3 KiB
PHP

<?php
/**
* @author Any
* @description 数据转换
* @date 2018-6-15 0:01:25
* @version 1.0.0
*/
namespace Wechat;
class DataConversion
{
public static function arrayToXml($array)
{
if(!is_array($array) || count($array) <= 0)
return null;
$xml = "<xml>\r\n";
$xml .= self::arrayToXmlSub($array);
$xml .= "</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) ."</".$key.">\r\n";
}
} else if(is_numeric($val)){
$xml .= "<" . $key .">" . $val ."</".$key.">\r\n";
} else {
$xml .= "<" . $key . "><![CDATA[" . $val . "]]></" . $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, "&");
}
}