由于低版本php(php5以下)没有json_encode和json_decode

所以有下面函数实现

function json_encode($data) {  

        switch ($type = gettype($data)) {  

              case 'NULL':  

                 return 'null';  

             case 'boolean':  

                 return ($data ? 'true' : 'false');  

             case 'integer':  

             case 'double':  

             case 'float':  

                return $data;  

             case 'string':  

                 return '"' . addslashes($data) . '"';  

             case 'object':  

                 $data = get_object_vars($data);  

             case 'array':  

                  $output_index_count = 0;  

                 $output_indexed = array();  

                 $output_associative = array();  

                 foreach ($data as $key => $value) {  

                   $output_indexed[] = json_encode($value);  

                     $output_associative[] = json_encode($key) . ':' . json_encode($value);  

                    if ($output_index_count !== NULL && $output_index_count++ !== $key) {  

                        $output_index_count = NULL;  

                     }  

                }  

                 if ($output_index_count !== NULL) {  

                     return '[' . implode(',', $output_indexed) . ']';  

                 } else {  

                    return '{' . implode(',', $output_associative) . '}';  

                }  

              default:  

                 return ''; // Not supported  

         }  

     }  

function json_decode($json)  

 {  

     $comment = false;  

     $out = '$x=';  

     for ($i=0; $i<strlen($json); $i++)  

     {  

         if (!$comment)  

         {  

              if (($json[$i] == '{') || ($json[$i] == '['))       $out .= ' array(';  

            else if (($json[$i] == '}') || ($json[$i] == ']'))   $out .= ')';  

             else if ($json[$i] == ':')    $out .= '=>';  

            else                         $out .= $json[$i];            

        }  

         else $out .= $json[$i];  

         if ($json[$i] == '"' && $json[($i-1)]!="\\")    $comment = !$comment;  

     }  

     eval($out . ';');  

    return $x;  

  }  

低版本php对json的处理的更多相关文章

  1. IE低版本 JSON.parse 和stringify 的兼容 (IE8以下)

    低版本的IE不支持JSON,JSON对象解析不是随着javascript产生的,找到一段兼容常用的JSON.parse和JSON.stringify的代码if (!window.JSON) {wind ...

  2. 让低版本的 Android 项目显示出 Material 风格的点击效果

    每天都被不同的需求纠缠的生活是幸福而又不幸的,这不我们家亲爱的设计师们又让我们在低版本的 Android 平台上实现一下类似于 Material Design 的点击效果. 虽然大家都知道 Mater ...

  3. Highcharts 在低版本 IE 上使用注意事项及个人总结

    很多人经常遇到图表在主流浏览器上运行正常,在低版本IE(包括IE6.IE7.IE8等)下运行出错(图表显示不出来或显示不正常)的情况,这不是兼容性问题,而是 IE 浏览器自身的一些限制,我们只需要注意 ...

  4. jQ1.5中的事件系统(低版本的事件系统)

    jQ的一个个版本事系统都在修正着bug和不断优化, 而且看了事件系统对事件的兼容更加熟悉, 更加了解jQ内部的事件机制. 因为jQ对事件系统引入了事件命名空间,事件的代理, 事件的手动触发,事件描述等 ...

  5. AngularJS开发指南7:AngularJS本地化,国际化,以及兼容IE低版本浏览器

    AngularJS本地化,国际化 国际化,简写为i18n,指的是使产品快速适应不同语言和文化. 本地化,简称l10n,是指使产品在特定文化和语言市场中可用. 对开发者来说,国际化一个应用意味着将所有的 ...

  6. HTML data属性简介以及低版本浏览器兼容算法

    实例 使用 data-* 属性来嵌入自定义数据: <ul> <li data-animal-type="bird">Owl</li> <l ...

  7. 高性能迷你React框架anu在低版本IE的实践

    理想是丰满的,现实是骨感的,react早期的版本虽然号称支持IE8,但是页面总会不自觉切换到奇异模式下,导致报错.因此必须让react连IE6,7都支持,这才是最安全.但React本身并不支持IE6, ...

  8. ionic新入坑-环境搭建+新建项目+打开低版本项目处理

    是的.我又双叒叕入新坑了.想我大学的时候web-app刚火起来.还帮忙做了我们学校医务室系统的web-app页面部分呢.时间太紧最后也没出个完整的版本.那时候只是用H5简单做了web部分.是想着用ph ...

  9. 如何解决vux不兼容安卓低版本问题

    最近做移动端H5页面用VUX来写UI组件这块.ios测试的时候没啥大问题,不过在4.4版本的华为手机上测试就崩了.接下来详细记述下崩的几个点. 第一:vux自带的提示框,在低版本安卓系统上全不是居中显 ...

随机推荐

  1. 欢迎加入本人建的QQ群,讨论技术,生活及每天都有招聘信息

    银狐AS3游戏2 3438131 银狐AS3Help 1803321 银狐U3D 167024653 银狐AS3转H5 467565102 本人在MSDN上的帐号 https://social.msd ...

  2. sourcetree免注册方法

    step1: https://www.sourcetreeapp.com/官网下载windows版软件 step2: 右键-->以管理员身份运行,便安装成功了 step3: 安装好之后会有这么一 ...

  3. jQuery中deferred对象的使用(一)

    在jquery1.5之后的版本中,加入了一个deferred对象,也就是延迟对象,用来处理未来某一时间点发生的回调函数.同时,还改写了ajax方法,现在的ajax方法返回的是一个deferred对象. ...

  4. Cocos2dx之touch事件

    今天看了下ccocos2dx touch事件部分的源码,从CCTouch.CCTouchHandler和CCTouchDispatcher简单的做了分析和总结,先直接看源码吧! 1.CCTouch c ...

  5. [c++] How many bytes do pointers take up?

    How many bytes do pointers take up? on 16 bit systems take up 2 bytes on 32 bit systems take up 4 by ...

  6. Python将阿拉伯数字转化为中文大写-乾颐堂

    利用Python将阿拉伯数字转化为中文大写,其实最麻烦的地方就是中间空多个0的问题,这种情况下,采用拆分法则,将一个大数字,先拆分成整数部分和小数部分,再对整数部分按照仟.万.亿.兆分位拆分为四个字符 ...

  7. strlen头文件

    #include <string.h> 函数strlen strsep 等等

  8. Spring.net 事件的注入

    1.首先上客户端代码 static void Main(string[] args)        {            IApplicationContext ctx = ContextRegi ...

  9. GitHub 出现这样的问题怎么办

    一开始以为是被墙,憋个半死. 后来自己好了(大概过了一上午),虚惊一场.

  10. 编写高质量代码改善C#程序的157个建议——建议131:用PascalCasing命名公开元素

    建议131:用PascalCasing命名公开元素 开放给调用者的属性.字段和方法都应该采用PascalCasing命名方法,比如: class Person { public string Firs ...