国产探花免费观看_亚洲丰满少妇自慰呻吟_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'=>'www.survivalescaperooms.com','2'=>'www.baidu.com','3'=>'www.sina.com.cn','4'=>'<a href="http://www.survivalescaperooms.com/" class="anchor" target="_blank">php粉絲網</a>'); 
  2. echo newArrayToJson($arr); 
  3. /* 
  4. 運行結果: 
  5. {"1":"www.survivalescaperooms.com","2":"www.baidu.com","3":"www.sina.com.cn","4":"php粉絲網"} 
  6. */ 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 闸北区| 紫阳县| 白河县| 临海市| 唐海县| 丰镇市| 尉犁县| 曲沃县| 邢台市| 九江县| 连南| 南部县| 赞皇县| 玉林市| 马边| 赫章县| 凤凰县| 中超| 宁强县| 聂拉木县| 射洪县| 芦山县| 星座| 祁门县| 会泽县| 苏州市| 峨山| 通辽市| 旬邑县| 安徽省| 冕宁县| 探索| 昌宁县| 莎车县| 新和县| 克拉玛依市| 仲巴县| 长宁县| 浙江省| 舞钢市| 麻阳|