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 相关文章推荐
使用网络地址转换实现多服务器负载均衡
Oct 09 PHP
PHP4在Windows2000下的安装
Oct 09 PHP
php面向对象全攻略 (十五) 多态的应用
Sep 30 PHP
php中常用字符串处理代码片段整理
Nov 07 PHP
php 判断字符串中是否包含html标签
Feb 17 PHP
PHP常用文件操作函数和简单实例分析
Jun 03 PHP
php自动载入类用法实例分析
Jun 24 PHP
php编译安装php-amq扩展简明教程
Jun 25 PHP
PHP实现的字符串匹配算法示例【sunday算法】
Dec 19 PHP
PHP检测一个数组有没有定义的方法步骤
Jul 20 PHP
php 下 html5 XHR2 + FormData + File API 上传文件操作实例分析
Feb 28 PHP
简单的php购物车代码
Jun 05 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
php 自写函数代码 获取关键字 去超链接
2010/02/08 PHP
比较时间段一与时间段二是否有交集的php函数
2011/05/31 PHP
php curl 伪造IP来源的实例代码
2012/11/01 PHP
php根据isbn书号查询amazon网站上的图书信息的示例
2014/02/13 PHP
Javascript之文件操作
2007/03/07 Javascript
使用jQuery UI的tooltip函数修饰title属性的气泡悬浮框
2013/06/24 Javascript
详解Javascript 装载和执行
2014/11/17 Javascript
jQuery仅用3行代码实现的显示与隐藏功能完整实例
2015/10/08 Javascript
PHP抓取HTTPS内容和错误处理的方法
2016/09/30 Javascript
详解Vue.js 2.0 如何使用axios
2017/04/21 Javascript
BootStrap daterangepicker 双日历控件
2017/06/02 Javascript
详解Nodejs之静态资源处理
2017/06/05 NodeJs
一个简易的js图片轮播效果
2017/07/22 Javascript
Vue.js表单标签中的单选按钮、复选按钮和下拉列表的取值问题
2017/11/22 Javascript
ejsExcel模板在Vue.js项目中的实际运用
2018/01/27 Javascript
详解微信小程序之提高应用速度小技巧
2020/01/07 Javascript
python类继承用法实例分析
2015/05/27 Python
Python极简代码实现杨辉三角示例代码
2016/11/15 Python
python利用正则表达式提取字符串
2016/12/08 Python
请不要重复犯我在学习Python和Linux系统上的错误
2016/12/12 Python
python使用参数对嵌套字典进行取值的方法
2019/04/26 Python
python操作excel让工作自动化
2019/08/09 Python
python利用itertools生成密码字典并多线程撞库破解rar密码
2019/08/12 Python
CSS3 clip-path 用法介绍详解
2018/03/01 HTML / CSS
CSS3实现各种图形的示例代码
2016/10/19 HTML / CSS
澳大利亚第一的设计师礼服租赁网站:GlamCorner
2017/08/13 全球购物
Bose加拿大官方网站:美国知名音响品牌
2019/03/21 全球购物
手工社团活动方案
2014/02/17 职场文书
乡镇信息公开实施方案
2014/03/23 职场文书
春节联欢会主持词
2014/03/24 职场文书
公司副总经理岗位职责
2014/10/01 职场文书
2014年教育工作总结
2014/11/26 职场文书
安全保证书
2015/01/16 职场文书
2015年幼儿园大班工作总结
2015/04/25 职场文书
爱岗敬业先进典型事迹材料(2016推荐版)
2016/02/26 职场文书
2016年六一儿童节开幕词
2016/03/04 职场文书