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实现分页的一个示例
Oct 09 PHP
特转载一高手总结PHP学习资源和链接.
Dec 05 PHP
PHP4与PHP5的时间格式问题
Feb 17 PHP
简单的PHP图片上传程序
Mar 27 PHP
php如何调用webservice应用介绍
Nov 24 PHP
解析argc argv在php中的应用
Jun 24 PHP
Yii Framework框架获取分类下面的所有子类方法
Jun 20 PHP
php中用memcached实现页面防刷新功能
Aug 19 PHP
深入理解PHP内核(二)之SAPI探究
Nov 10 PHP
编写PHP脚本使WordPress的主题支持Widget侧边栏
Dec 14 PHP
PHP+原生态ajax实现的省市联动功能详解
Aug 15 PHP
PHP unlink与rmdir删除目录及目录下所有文件实例代码
Feb 07 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
AM/FM收音机的安装与调试
2021/03/02 无线电
php+mysql大量用户登录解决方案分析
2014/12/29 PHP
php实现utf-8转unicode函数分享
2015/01/06 PHP
tp5(thinkPHP5框架)captcha验证码配置及验证操作示例
2019/05/28 PHP
thinkphp5.1框架中容器(Container)和门面(Facade)的实现方法分析
2019/08/05 PHP
php设计模式之策略模式实例分析【星际争霸游戏案例】
2020/03/26 PHP
node.js使用nodemailer发送邮件实例
2014/03/10 Javascript
2则自己编写的jQuery特效分享
2015/02/26 Javascript
JQuery实现带排序功能的权限选择实例
2015/05/18 Javascript
jQuery实现判断滚动条到底部
2015/06/23 Javascript
包含中国城市的javascript对象实例
2015/08/03 Javascript
JS组件系列之Bootstrap table表格组件神器【二、父子表和行列调序】
2016/05/10 Javascript
js转换对象为xml
2017/02/17 Javascript
js中document.referrer实现移动端返回上一页
2017/02/22 Javascript
javascript深拷贝的原理与实现方法分析
2017/04/10 Javascript
Angular.js中下拉框实现渲染html的方法
2017/06/18 Javascript
微信小程序开发之好友列表字母列表跳转对应位置
2017/09/26 Javascript
解决select2在bootstrap modal中不能正常使用的问题
2018/08/09 Javascript
解决angularjs中同步执行http请求的方法
2018/08/13 Javascript
jQuery操作cookie的示例代码
2019/06/05 jQuery
Electron实现应用打包、自动升级过程解析
2020/07/07 Javascript
[48:28]完美世界DOTA2联赛循环赛FTD vs Magma第二场 10月30日
2020/10/31 DOTA
python中关于时间和日期函数的常用计算总结(time和datatime)
2013/03/08 Python
Python3中简单的文件操作及两个简单小实例分享
2017/06/18 Python
python利用sklearn包编写决策树源代码
2017/12/21 Python
Python高级特性切片(Slice)操作详解
2018/09/27 Python
Python使用Pandas库实现MySQL数据库的读写
2019/07/06 Python
Python数据可视化 pyecharts实现各种统计图表过程详解
2019/08/15 Python
PyTorch中常用的激活函数的方法示例
2019/08/20 Python
Pytorch实现基于CharRNN的文本分类与生成示例
2020/01/08 Python
python实现梯度法 python最速下降法
2020/03/24 Python
Python调用Redis的示例代码
2020/11/24 Python
乐天旅游香港网站:日本饭店预订
2017/11/29 全球购物
印度排名第一的蛋糕、鲜花和礼品送货:Winni
2019/08/02 全球购物
职工宿舍管理制度
2015/08/05 职场文书
vue中div禁止点击事件的实现
2022/04/02 Vue.js