php使用json_encode对变量json编码


Posted in PHP onApril 07, 2014

在 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'
};
PHP 相关文章推荐
PHP如何抛出异常处理错误
Mar 02 PHP
PHP 时间日期操作实战
Aug 26 PHP
PHP中“简单工厂模式”实例代码讲解
Sep 04 PHP
深入PHP变量存储的详解
Jun 13 PHP
解析php中die(),exit(),return的区别
Jun 20 PHP
解析link_mysql的php版
Jun 30 PHP
ECMall支持SSL连接邮件服务器的配置方法详解
May 19 PHP
PHP中数组的分组排序实例
Jun 01 PHP
php函数传值的引用传递注意事项分析
Jun 25 PHP
thinkPHP5框架实现多数据库连接,跨数据连接查询操作示例
May 29 PHP
Laravel框架下的Contracts契约详解
Mar 17 PHP
Yii实现微信公众号场景二维码的方法实例
Aug 30 PHP
php使用正则表达式提取字符串中尖括号、小括号、中括号、大括号中的字符串
Apr 05 #PHP
PHP中的Memcache详解
Apr 05 #PHP
PHP中使用memcache存储session的三种配置方法
Apr 05 #PHP
PHP包含文件函数include、include_once、require、require_once区别总结
Apr 05 #PHP
PHP6 中可能会出现的新特性预览
Apr 04 #PHP
php实现水仙花数示例分享
Apr 03 #PHP
PHP抓取、分析国内视频网站的视频信息工具类
Apr 02 #PHP
You might like
Ajax+PHP快速上手及简单应用说明
2013/07/24 PHP
PHP中strlen()和mb_strlen()的区别浅析
2014/06/19 PHP
thinkPHP分组后模板无法加载问题解决方法
2016/07/12 PHP
php数据库的增删改查 php与javascript之间的交互
2017/08/31 PHP
getComputedStyle与currentStyle获取样式(style/class)
2013/03/19 Javascript
Javacript实现颜色梯度变化和渐变的效果代码
2013/05/31 Javascript
详解JS 比较两个Json对象的值是否相等的实例
2013/11/20 Javascript
JavaScript设计模式之单件模式介绍
2014/12/28 Javascript
js 获取元素在页面上的偏移量的方法汇总
2015/04/13 Javascript
js实现点击向下展开的下拉菜单效果代码
2015/09/01 Javascript
Angularjs中UI Router全攻略
2016/01/29 Javascript
如何使用jquery实现文字上下滚动效果
2016/10/12 Javascript
基于slideout.js实现移动端侧边栏滑动特效
2016/11/28 Javascript
使用JavaScriptCore实现OC和JS交互详解
2017/03/28 Javascript
javascript基础进阶_深入剖析执行环境及作用域链
2017/09/05 Javascript
一次记住JavaScript的6个正则表达式方法
2018/02/22 Javascript
Vue-cli@3.0 插件系统简析
2018/09/05 Javascript
JQuery特殊效果和链式调用操作示例
2019/05/13 jQuery
JavaScript制作3D旋转相册
2020/08/02 Javascript
[01:00:17]DOTA2-DPC中国联赛 正赛 SAG vs Dynasty BO3 第二场 1月25日
2021/03/11 DOTA
MySQLdb ImportError: libmysqlclient.so.18解决方法
2014/08/21 Python
Python基础之函数用法实例详解
2014/09/10 Python
python 3.6 tkinter+urllib+json实现火车车次信息查询功能
2017/12/20 Python
Python selenium实现微博自动登录的示例代码
2018/05/16 Python
和孩子一起学习python之变量命名规则
2018/05/27 Python
python 数字类型和字符串类型的相互转换实例
2018/07/17 Python
python实现把两个二维array叠加成三维array示例
2019/11/29 Python
python识别验证码的思路及解决方案
2020/09/13 Python
优秀士兵先进事迹
2014/02/06 职场文书
妇联领导班子剖析材料
2014/08/21 职场文书
大四优秀党员个人民主评议
2014/09/19 职场文书
2014年小学德育工作总结
2014/12/05 职场文书
公司副总经理岗位职责
2015/04/08 职场文书
先进基层党组织主要事迹材料
2015/11/03 职场文书
2016年党员公开承诺书范文
2016/03/24 职场文书
使用Python拟合函数曲线
2022/04/14 Python