DataTransform.php 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. <?php
  2. /**
  3. * 重庆赤晓店信息科技有限公司
  4. * https://www.chixiaodian.com
  5. * Copyright (c) 2023 赤店商城 All rights reserved.
  6. */
  7. namespace app\utils;
  8. class DataTransform
  9. {
  10. public static function arrayToXml($array)
  11. {
  12. if (!is_array($array) || count($array) <= 0)
  13. return null;
  14. $xml = "<xml>\r\n";
  15. $xml .= self::arrayToXmlSub($array);
  16. $xml .= "</xml>";
  17. return $xml;
  18. }
  19. private static function arrayToXmlSub($array)
  20. {
  21. if (!is_array($array) || count($array) <= 0)
  22. return null;
  23. $xml = "";
  24. foreach ($array as $key => $val) {
  25. if (is_array($val)) {
  26. if (is_numeric($key))
  27. $xml .= self::arrayToXmlSub($val);
  28. else
  29. $xml .= "<" . $key . ">" . self::arrayToXmlSub($val) . "</" . $key . ">\r\n";
  30. } elseif (is_numeric($val)) {
  31. $xml .= "<" . $key . ">" . $val . "</" . $key . ">\r\n";
  32. } else {
  33. $xml .= "<" . $key . "><![CDATA[" . $val . "]]></" . $key . ">\r\n";
  34. }
  35. }
  36. return $xml;
  37. }
  38. public static function xmlToArray($xml)
  39. {
  40. //禁止引用外部xml实体
  41. libxml_disable_entity_loader(true);
  42. $res = simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA);
  43. return (array) $res;
  44. }
  45. public static function arrayToUrlParam($array, $url_encode = true)
  46. {
  47. $url_param = "";
  48. foreach ($array as $key => $value) {
  49. if (is_array($value)) {
  50. $list_url_param = "";
  51. foreach ($value as $list_key => $list_value) {
  52. if (!is_array($list_value))
  53. $url_param .= $key . "[" . $list_key . "]=" . ($url_encode ? urlencode($list_value) : $list_value) . "&";
  54. }
  55. $url_param .= trim($list_url_param, "&") . "&";
  56. } else {
  57. $url_param .= $key . "=" . ($url_encode ? urlencode($value) : $value) . "&";
  58. }
  59. }
  60. return trim($url_param, "&");
  61. }
  62. public static function arrayToUrlParamTianxin100($array, $url_encode = true){
  63. $buff = "";
  64. foreach ($array as $k => $v)
  65. {
  66. if($k != "sign" && $v != "" && !is_array($v)){
  67. $buff .= $k . "=" . $v . "&";
  68. }
  69. }
  70. $buff = trim($buff, "&");
  71. return $buff;
  72. }
  73. }