php使用json_encode对变量json编码

 更新时间:2014年04月07日 09:29:44   作者:  
这篇文章主要是说明 json_encode 使用时一个需要注意的细节,无论返回的是数组还是 json,都不代表这一定就是个错误的返回结果,当前端需要的数组时,数组就是正确的结果,反之亦然

在 ajax 横行的今天,json 顺理成章地成为了前后端交互一个极其重要的工具。对于 PHP 来说,通常使用 json_encode 方法将一个 PHP 组数,转换成前端可以解析的 json 字符串,这也是 PHP 手册上描述的内容,但事实是这样的吗?看看下面这段代码:

复制代码 代码如下:

$a = array( 'Jack' , 'Sam' , 'Tom' );
echo json_encode( $a );

当 JavaScript 请求到上面的代码,PHP 将解析数组 $a 为 json 字符串并返回到前端,但事实上在前端拿到的返回结果却是一个数组。
复制代码 代码如下:

[ "Jack" ,  "Sam" ,  "Tom" ]

这个结果对于前端来说也许并不是所期望的,对于 JavaScript 来说,数组和 json 的关系非常密切,甚至可以简单地把 json 理解为关联数组,但这并不意味着二者可以划等号,比如 json 没有 length 属性,也不能进行数字索引,json 是键值对,而 JavaScript 的数组严格说来是没有"键"的,这和 PHP 的差异比较大。那么为什么 json_encode 的返回结果是数组呢?

本文开头的 PHP 代码中的数组是严格意义上的数字索引数组,json_encode 方法在处理这样的数组的时候会返回数组字符串,它需要同时满足两个条件:1. 数字索引数组,2. 索引值从 0 开始。这意味着下面的代码也会返回同样的结果:

复制代码 代码如下:

$b = array(
'0' => 'Jack',
'1' => 'Sam',
'2' => 'Tom'
);
echo json_encode( $b );

这两个条件的任意一个没有获得满足,那么 json_encode 方法才真正的返回 json 字符串:
复制代码 代码如下:

$c = array(
'person-1' => 'Jack',
'person-2' => 'Sam',
'person-3' => 'Tom'
);
echo json_encode( $c );

这时前端得到的结果如下:
复制代码 代码如下:

{
'person-1' : 'Jack',
'person-2' : 'Sam',
'person-3' : 'Tom'
};

相关文章

  • Laravel框架中缓存的使用方法分析

    Laravel框架中缓存的使用方法分析

    这篇文章主要介绍了Laravel框架中缓存的使用方法,结合具体实例形式分析了Laravel框架中缓存的常用方法、操作步骤及相关使用操作技巧,需要的朋友可以参考下
    2019-09-09
  • laravel实现查询最后执行的一条sql语句的方法

    laravel实现查询最后执行的一条sql语句的方法

    今天小编就为大家分享一篇laravel实现查询最后执行的一条sql语句的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-10-10
  • LaravelS通过Swoole加速Laravel/Lumen详解

    LaravelS通过Swoole加速Laravel/Lumen详解

    这篇文章主要给大家介绍了关于LaravelS通过Swoole加速Laravel/Lumen的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2018-03-03
  • php微信分享到朋友圈、QQ、朋友、微博

    php微信分享到朋友圈、QQ、朋友、微博

    这篇文章主要为大家详细介绍了php微信分享到朋友圈、QQ、朋友、微博,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-02-02
  • PHP 使用memcached简单示例分享

    PHP 使用memcached简单示例分享

    在很多场合,我们都会听到 memcached 这个名字,但很多同学只是听过,并没有用过或实际了解过,只知道它是一个很不错的东东。这里简单介绍一下,memcached 是高效、快速的分布式内存对象缓存系统,主要用于加速WEB动态应用程序。今天我们就先来简单探讨下memcached的用法
    2015-03-03
  • Yii输入正确验证码却验证失败的解决方法

    Yii输入正确验证码却验证失败的解决方法

    这篇文章主要给大家介绍了Yii输入正确验证码却验证失败的解决方法,文中通过示例代码介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
    2017-06-06
  • Yii CFileCache 获取不到值的原因分析

    Yii CFileCache 获取不到值的原因分析

    这篇文章主要介绍了Yii CFileCache 获取不到值的原因分析,非常不错,具有参考借鉴价值,需要的朋友参考下
    2017-02-02
  • 一个好用的PHP验证码类实例分享

    一个好用的PHP验证码类实例分享

    这篇文章主要介绍了一个好用的PHP验证码类实例,有需要的朋友可以参考一下
    2013-12-12
  • php不用正则验证真假身份证

    php不用正则验证真假身份证

    以前我要验证身份证我们多半会使用正则判断用户输入是不是15位或18位的全数字,然后来判断身份证是否合法了,这种方法只是最基础的,下面提供的这个身份证验证,可以识别真假身份证哦
    2013-11-11
  • PHP实现简单注册登录详细代码

    PHP实现简单注册登录详细代码

    这篇文章主要介绍了PHP实现简单注册登录详细全部代码实例讲解,代码讲解的很清楚,对这方面不懂的初学者可以照着练习研究下
    2021-01-01

最新评论