国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

PHP自定義遞歸函數實現數組轉JSON功能【支持GBK編碼】

2024-09-04 11:46:41
字體:
來源:轉載
供稿:網友

本文實例講述了PHP自定義遞歸函數實現數組轉JSON功能。分享給大家供大家參考,具體如下:

問題:

由于最近的一個項目中要給別的公司提供接口,給他們喂 GBK 編碼的 json 數據,但是有一個問題是 PHP 中的 json_encode 加密函數只支持 utf-8 編碼,這就比較尷尬了。我們的數據是 GBK 編碼的,接收方要求的數據格式也是 GBK 編碼的,一開始想的是先將數據轉為 utf-8 編碼再使用 json_encode 函數,結果是這導致我們的中文內容亂碼了,所以,最后使用的是手動對數據加密的方式。

實現:

想實現這個功能,最主要是觀察 json 數據的特點,一開始 LZ 總結得不到位導致不能完全實現 json_encode 函數的功能,后面參照網上的資料,實現了這個功能(就是一個遞歸函數):

  1. function newArrayToJson($array
  2.   if(!is_array($array)) 
  3.   { 
  4.     return ''
  5.   } 
  6.   $func = __FUNCTION__
  7.   //關鍵判斷是不是關聯數組,以此來決定是否需要json加密key和使用[] 
  8.   $associative = (array_keys($array) !== range(0, count($array) - 1)) ? true : false; 
  9.   if($associative && !emptyempty($array)) 
  10.   { 
  11.     $construct = array(); 
  12.     foreach($array as $key => $value
  13.     { 
  14.       $key = '"'.$key.'"'
  15.       if(is_array($value)) 
  16.       { 
  17.         $value = $func($value); 
  18.       } 
  19.       elseif(!is_numeric($value)) 
  20.       { 
  21.         $value = '"'.$value.'"'
  22.       } 
  23.       $construct[] = "$key:$value"
  24.     } 
  25.     $result = "{".implode(",",$construct)."}"
  26.   } 
  27.   else 
  28.   { 
  29.     $construct = array(); 
  30.     foreach($array as $value
  31.     { 
  32.       if(is_array($value)) 
  33.       { 
  34.         $value = $func($value); 
  35.       } 
  36.       else if(!is_numeric($value)) 
  37.       { 
  38.         $value = '"'.$value.'"'
  39.       } //Vevb.com 
  40.       $construct[] = $value
  41.     } 
  42.     $result = "[".implode(","$construct)."]"
  43.   } 
  44.   return $result

測試:

  1. $arr=array('1'=>'m.survivalescaperooms.com','2'=>'www.baidu.com','3'=>'www.sina.com.cn','4'=>'<a href="http://m.survivalescaperooms.com/" class="anchor" target="_blank">php粉絲網</a>'); 
  2. echo newArrayToJson($arr); 
  3. /* 
  4. 運行結果: 
  5. {"1":"m.survivalescaperooms.com","2":"www.baidu.com","3":"www.sina.com.cn","4":"php粉絲網"} 
  6. */ 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 马公市| 游戏| 松潘县| 南阳市| 定结县| 蚌埠市| 长汀县| 沙坪坝区| 遂川县| 固始县| 景东| 郎溪县| 河南省| 儋州市| 高邮市| 司法| 全州县| 台安县| 上饶县| 宜兴市| 望都县| 海城市| 依安县| 德格县| 雷州市| 唐山市| 石家庄市| 小金县| 澎湖县| 岳阳市| 洛川县| 彰武县| 抚松县| 铅山县| 综艺| 金华市| 安乡县| 铜川市| 花莲县| 富阳市| 大厂|