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音乐采集(部分代码)
Feb 14 PHP
php全排列递归算法代码
Oct 09 PHP
PHP对MongoDB[NoSQL]数据库的操作
Mar 01 PHP
php基于GD库画五星红旗的方法
Feb 24 PHP
PHP实现基于文本的摩斯电码生成器
Jan 11 PHP
php 时间time与日期date之间的使用详解及区别
Nov 07 PHP
php实现背景图上添加圆形logo图标的方法
Nov 17 PHP
Zend Framework过滤器Zend_Filter用法详解
Dec 09 PHP
PHP实现的堆排序算法详解
Aug 17 PHP
PHP INT类型在内存中占字节详解
Jul 20 PHP
实现laravel 插入操作日志到数据库的方法
Oct 11 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禁止页面缓存的代码
2011/10/23 PHP
在Mac上编译安装PHP7的开发环境
2015/07/28 PHP
PHP的Yii框架使用中的一些错误解决方法与建议
2015/08/21 PHP
phalcon model在插入或更新时会自动验证非空字段的解决办法
2016/12/29 PHP
PHP验证码类ValidateCode解析
2017/01/07 PHP
ThinkPHP框架整合微信支付之刷卡模式图文详解
2019/04/10 PHP
javascript 获取图片尺寸及放大图片
2013/09/04 Javascript
JS实现点击上移下移LI行数据的方法
2015/08/05 Javascript
Bootstrap嵌入jqGrid,使你的table牛逼起来
2016/05/05 Javascript
JS+HTML5实现的前端购物车功能插件实例【附demo源码下载】
2016/10/17 Javascript
AngularJS  双向数据绑定详解简单实例
2016/10/20 Javascript
JavaScript实现邮箱地址自动匹配功能代码
2016/11/28 Javascript
JavaScript 数组去重并统计重复元素出现的次数实例
2017/12/14 Javascript
Anaconda多环境多版本python配置操作方法
2017/09/12 Python
浅谈Python黑帽子取代netcat
2018/02/10 Python
Python使用pyodbc访问数据库操作方法详解
2018/07/05 Python
Python 使用PIL中的resize进行缩放的实例讲解
2018/08/03 Python
Python根据成绩分析系统浅析
2019/02/11 Python
Python smtp邮件发送模块用法教程
2020/06/15 Python
Python计算信息熵实例
2020/06/18 Python
python如何设置静态变量
2020/09/07 Python
python matlab库简单用法讲解
2020/12/31 Python
python3 kubernetes api的使用示例
2021/01/12 Python
英国口碑最好的的维他命胶囊品牌:Myvitamins(有中文站)
2016/12/03 全球购物
见习期自我鉴定
2013/11/07 职场文书
最新自我评价范文
2013/11/16 职场文书
产品质量承诺书范文
2014/03/27 职场文书
企业宣传策划方案
2014/05/29 职场文书
慈善捐赠倡议书
2014/08/30 职场文书
财会专业大学生求职信
2014/09/26 职场文书
企业整改报告范文
2014/11/08 职场文书
2014年药房工作总结
2014/11/22 职场文书
奔腾年代观后感
2015/06/09 职场文书
python自动化之如何利用allure生成测试报告
2021/05/02 Python
Go并发4种方法简明讲解
2022/04/06 Golang
OpenCV项目实践之停车场车位实时检测
2022/04/11 Python