php5.2以下版本json_encode兼容性

php5.1版本通过编译加载的json.so,在使用json_encode时会把键名为空的数组

$arr =array(''=>array('id'=>'aaa','total'=>'bbb'))转化成空;但是在php5.2中使用使用自带的此函数不存在此问题。

或者不想编译加载json.so扩展,可以使用替代函数

$jsonencode = version_compare(PHP_VERSION, '5.2.5', '>=') ? json_encode($arr) : php_json_encode($arr);

echo $jsonencode;

function php_json_encode($arg) {

$returnValue = '';

$c = '';

$i = '';

$l = '';

$s = '';

$v = '';

$numeric = true;

switch (gettype($arg)) {

case 'array':

foreach ($arg AS $i => $v) {

if (!is_numeric($i)) {

$numeric = false;

break;

}

}

if ($numeric) {

foreach ($arg AS $i => $v) {

if (strlen($s) > 0) {

$s .= ',';

}

$s .= json_encode($arg[$i]);

}

$returnValue = '[' . $s . ']';

} else {

foreach ($arg AS $i => $v) {

if (strlen($s) > 0) {

$s .= ',';

}

$s .= json_encode($i) . ':' . json_encode($arg[$i]);

}

$returnValue = '{' . $s . '}';

}

break;

case 'object':

foreach (get_object_vars($arg) AS $i => $v) {

$v = json_encode($v);

if (strlen($s) > 0) {

$s .= ',';

}

$s .= json_encode($i) . ':' . $v;

}

$returnValue = '{' . $s . '}';

break;

case 'integer':

case 'double':

$returnValue = is_numeric($arg) ? (string) $arg : 'null';

break;

case 'string':

$returnValue = '"' . strtr($arg, array(

"\r" => '\\r', "\n" => '\\n', "\t" => '\\t', "\b" => '\\b',

"\f" => '\\f', '\\' => '\\\\', '"' => '\"',

"\x00" => '\u0000', "\x01" => '\u0001', "\x02" => '\u0002', "\x03" => '\u0003',

"\x04" => '\u0004', "\x05" => '\u0005', "\x06" => '\u0006', "\x07" => '\u0007',

"\x08" => '\b', "\x0b" => '\u000b', "\x0c" => '\f', "\x0e" => '\u000e',

"\x0f" => '\u000f', "\x10" => '\u0010', "\x11" => '\u0011', "\x12" => '\u0012',

"\x13" => '\u0013', "\x14" => '\u0014', "\x15" => '\u0015', "\x16" => '\u0016',

"\x17" => '\u0017', "\x18" => '\u0018', "\x19" => '\u0019', "\x1a" => '\u001a',

"\x1b" => '\u001b', "\x1c" => '\u001c', "\x1d" => '\u001d', "\x1e" => '\u001e',

"\x1f" => '\u001f'

)) . '"';

break;

case 'boolean':

$returnValue = $arg?'true':'false';

break;

default:

$returnValue = 'null';

}

return $returnValue;

}

php5.2 json,php5.2以上版本json_encode兼容性相关推荐

  1. php5.2 json,php5.2 对json格式的支持

    class Peo { var $name='fantasy'; var $age=12; var $sex='男'; var $addr='in some body\'heart'; static ...

  2. 【PHP发展史】PHP5.2 到 PHP5.6 中新增的功能详解

    为什么80%的码农都做不了架构师?>>>    截至目前(2014.2), PHP 的最新稳定版本是 PHP5.5, 但有差不多一半的用户仍在使用已经不在维护的 PHP5.2, 其余 ...

  3. php 输出json 中文转unicode,PHP json_encode中文unicode转码问题

    用PHP的json_encode来处理中文的时候, 中文都会被编码, 变成不可读的, 类似"\u***"的格式,如果想汉字不进行转码,这里提供三种方法 1.升级PHP,在PHP5. ...

  4. 爬坑”无法找到 .NET Core SDK。请检查确保已安装此项且 global.json 中指定的版本(如有)与所安装的版本相匹配“

    这几天需要用到神器dnspy,从GITHub上获取了源码[dnspy源码]后在本地生成,意外的在打开解决方案是VS提示"无法找到 .NET Core SDK.请检查确保已安装此项且 glob ...

  5. 无法打开项目文件。 无法找到 .NET SDK。请检查确保已安装此项且 global.json 中指定的版本(如有)与所安装的版本相匹配

    问题:如果在运行c#代码出现以下情况: 无法打开项目文件. 无法找到 .NET SDK.请检查确保已安装此项且 global.json 中指定的版本(如有)与所安装的版本相匹配 解决方案:我们可以先看 ...

  6. IE浏览器 对 jquery版本的兼容性 支持

    IE浏览器存在多种兼容问题 掌握技巧,不再害怕 IE浏览器 对 jquery版本的兼容性 注意: ie9 / ie8 / ie7 -版本的IE浏览器,不兼容jquery中的部分属性方法: 以 jque ...

  7. html的版本适配,2.1.3 HTML 5确保了与之前HTML版本的兼容性

    2.1.3   HTML 5确保了与之前HTML版本的兼容性 HTML 5的语法是为了保证与之前的HTML语法达到***程度的兼容而设计的.例如,符合"没有 的结束标记"的HTML ...

  8. Android Q版本应用兼容性适配指导

    目录 Android Q版本应用兼容性适配指导... 1 1.      背景说明... 4 2.      存储空间限制... 4 2.1背景     4 2.2兼容性影响... 5 2.3 适配指 ...

  9. css3低版本浏览器兼容性问题

    css3低版本浏览器兼容性问题 什么是浏览器兼容性问题? 浏览器内核不同,对同一段代码会有不同的解析,就会造成页面效果不统一的情况,进而造成浏览器兼容性问题. 各个浏览器内核: 浏览器类型     内 ...

最新文章

  1. 北大「最优化:建模、算法与理论」新书, 附579页电子版与课件
  2. 更改windows域名
  3. wifi动不动就断开_手机信号满格,但是WIFI经常掉线!我来教你怎么办
  4. C++中的deque、stack、queue及priority_queue
  5. gradle sync failed——Android studio 突然就无法自动下载gradle了
  6. oracle 表字段顺序_Oracle数据库如何修改表中字段顺序
  7. mysql的面试2_mysql数据库面试题(2)
  8. vijos p1782——借教室(noip2012提高组第2题)
  9. 设计方案--移动端延迟300ms的原因以及解决方案
  10. 《深入浅出数据分析》
  11. cass 河流走向 符号_CASS地形图数据预处理标准
  12. 常用参考文献GB/T 7714, MLA ,APA格式区别
  13. 微服务中的Spring Cloud和Spring Cloud Alibaba分别有哪些组件和作用,众多组件中如何做技术选型?
  14. 计算机硬盘分区win7,win7移动硬盘怎么分区|win7移动硬盘分区的方法
  15. 《 Programming Collective Intelligence》案例介绍与分析——Making Recommendations
  16. [Tool] 仿博客园插入代码的 WLW 插件
  17. Greenplum【部署 04】GPSS扩展安装并使用GPKafka实现Kafka数据导入Greenplum数据库(安装包网盘分享)
  18. 图解LVS的工作原理
  19. OpenJudge - 海贼王之伟大航路(状态压缩+DFS)
  20. 洛谷P2790 ccj与zrz之积木问题 题解

热门文章

  1. 想了解 spring-cloud-kubernetes,那就先来实战一把官方demo
  2. AOC萌新探索:搭建和体验在线AOC环境
  3. 探索GaussDB(DWS)的过程化SQL语言能力
  4. 一起来学习LiteOS中断模块的源代码
  5. 【我的物联网成长记1】如何进行端到端开发?
  6. Vue+ElementUI项目使用webpack输出MPA
  7. 开源大数据平台HBase对接OBS操作指南
  8. Hadoop的I/O操作
  9. 红橙Darren视频笔记 流式布局tagLayout measure layout方法学习 adapter使用 学习感悟
  10. SpykeTorch: Efficient Simulation of Convolutional Spiking Neural Networks With at Most One Spike per