本文实例讲述了PHP自定义递归函数实现数组转JSON功能。分享给大家供大家参考,具体如下:
问题:
由于最近的一个项目中要给别的公司提供接口,给他们喂 GBK 编码的 json 数据,但是有一个问题是 PHP 中的 json_encode
加密函数只支持 utf-8 编码,这就比较尴尬了。我们的数据是 GBK 编码的,接收方要求的数据格式也是 GBK 编码的,一开始想的是先将数据转为 utf-8 编码再使用 json_encode
函数,结果是这导致我们的中文内容乱码了,所以,最后使用的是手动对数据加密的方式。
实现:
想实现这个功能,最主要是观察 json 数据的特点,一开始 LZ 总结得不到位导致不能完全实现 json_encode
函数的功能,后面参照网上的资料,实现了这个功能(就是一个递归函数):
function newArrayToJson($array) { if(!is_array($array)) { return ''; } $func = __FUNCTION__; //关键判断是不是关联数组,以此来决定是否需要json加密key和使用[] $associative = (array_keys($array) !== range(0, count($array) - 1)) "'.$key.'"'; if(is_array($value)) { $value = $func($value); } elseif(!is_numeric($value)) { $value = '"'.$value.'"'; } $construct[] = "$key:$value"; } $result = "{".implode(",",$construct)."}"; } else { $construct = array(); foreach($array as $value) { if(is_array($value)) { $value = $func($value); } else if(!is_numeric($value)) { $value = '"'.$value.'"'; } $construct[] = $value; } $result = "[".implode(",", $construct)."]"; } return $result; }
//测试: $arr=array('1'=>'www.jb51.net','2'=>'www.baidu.com','3'=>'www.sina.com.cn','4'=>''); echo newArrayToJson($arr); /* 运行结果: {"1":"www.jb51.net","2":"www.baidu.com","3":"www.sina.com.cn","4":""} */
PS:这里再为大家推荐几款比较实用的json在线工具供大家参考使用:
在线JSON代码检验、检验、美化、格式化工具:
http://tools.jb51.net/code/json
JSON在线格式化工具:
http://tools.jb51.net/code/jsonformat
在线XML/JSON互相转换工具:
http://tools.jb51.net/code/xmljson
json代码在线格式化/美化/压缩/编辑/转换工具:
http://tools.jb51.net/code/jsoncodeformat
C语言风格/HTML/CSS/json代码格式化美化工具:
http://tools.jb51.net/code/ccode_html_css_json
更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP中json格式数据操作技巧汇总》、《PHP数学运算技巧总结》、《PHP基本语法入门教程》、《PHP数组(Array)操作技巧大全》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家PHP程序设计有所帮助。
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
RTX 5090要首发 性能要翻倍!三星展示GDDR7显存
三星在GTC上展示了专为下一代游戏GPU设计的GDDR7内存。
首次推出的GDDR7内存模块密度为16GB,每个模块容量为2GB。其速度预设为32 Gbps(PAM3),但也可以降至28 Gbps,以提高产量和初始阶段的整体性能和成本效益。
据三星表示,GDDR7内存的能效将提高20%,同时工作电压仅为1.1V,低于标准的1.2V。通过采用更新的封装材料和优化的电路设计,使得在高速运行时的发热量降低,GDDR7的热阻比GDDR6降低了70%。
更新日志
- 不止黑神话!杭州给原创企业真金白银扶持 打造“杭州游戏”品牌
- 很有多样性:《战锤》首次引入非二元性别角色
- 《少女前线2:追放》项目组将裁员 官方:进一步优化组织结构
- 陈慧琳.2002-闪亮每一天新歌+精选2CD【正东】【WAV+CUE】
- 袁培华.1992-有缘【歌林】【WAV+CUE】
- 王瑞霞.1996-是我太软心【名冠】【WAV+CUE】
- 《谭维维 30首经典流行歌曲精选辑 2CD》[WAV/分轨][1.1GB]
- 《赵传 出道三十年全新大碟 你过得还好吗》[WAV/分轨][460MB]
- 《发烧四大天王 磁性男声HiFi发烧碟 2CD》[WAV/分轨][1GB]
- 黑神话悟空上品鼠司空精魄获取方法一览|上品鼠司空精魄收集攻略
- 《真三国无双:起源》新情报将于9月26日公开,实机演示亮相!
- 黑神话悟空上品鼠禁卫精魄获取方法一览|上品鼠禁卫精魄收集攻略
- 优美的旋律至真的情怀《品茶轻音乐·极品典藏Vol.1CD1》[WAV+CUE]
- 曾嵘《峥嵘岁月DSD(试音碟)》WAV+CUE
- 小提琴天碟AlfredoCampoli坎波利-贝多芬D大调小提琴协奏曲与普罗米修斯作品选FLAC