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 相关文章推荐
dede3.1分页文字采集过滤规则详说(图文教程)续二
Apr 03 PHP
Linux下ZendOptimizer的安装与配置方法
Apr 12 PHP
解析php中array_merge与array+array的区别
Jun 21 PHP
使用php将某个目录下面的所有文件罗列出来的方法详解
Jun 21 PHP
PHP数组操作――获取数组最后一个值的方法
Apr 14 PHP
PHP数组与对象之间使用递归实现转换的方法
Jun 24 PHP
PHP中的静态变量及static静态变量使用详解
Nov 05 PHP
Mac下php 5升级到php 7的步骤详解
Apr 26 PHP
PHP使用new StdClass()创建空对象的方法分析
Jun 06 PHP
PHP静态方法和静态属性及常量属性的区别与介绍
Mar 22 PHP
php array_chunk()函数用法与注意事项
Jul 12 PHP
php array_map()函数实例用法
Mar 03 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将gd生成的图片缓存到memcache的小例子
2013/06/05 PHP
php数组索引与键值操作技巧实例分析
2015/06/24 PHP
PHP采用超长(超大)数字运算防止数字以科学计数法显示的方法
2016/04/01 PHP
php中文字符串截取多种方法汇总
2016/10/06 PHP
PHP实现的迪科斯彻(Dijkstra)最短路径算法实例
2017/09/16 PHP
php处理多图上传压缩代码功能
2018/06/13 PHP
laravel ORM关联关系中的 with和whereHas用法
2019/10/16 PHP
laravel 错误处理,接口错误返回json代码
2019/10/25 PHP
javascript SocialHistory 检查访问者是否访问过某站点
2008/08/02 Javascript
javascript 面向对象思想 附源码
2009/07/07 Javascript
js验证整数加保留小数点的简单实例
2013/12/02 Javascript
编写自己的jQuery提示框(Tip)插件
2015/02/05 Javascript
javascript常见数据验证插件大全
2015/08/03 Javascript
深入理解Ajax的get和post请求
2016/06/02 Javascript
JS把内容动态插入到DIV的实现方法
2016/07/19 Javascript
jquery设置css样式的多种方法(总结)
2017/02/21 Javascript
Angular1.x复杂指令实例详解
2017/03/01 Javascript
Vue 组件封装 并使用 NPM 发布的教程
2018/09/30 Javascript
ES6 fetch函数与后台交互实现
2018/11/14 Javascript
微信小程序实现倒计时功能
2020/11/19 Javascript
Python实现处理管道的方法
2015/06/04 Python
举例讲解如何在Python编程中进行迭代和遍历
2016/01/19 Python
使用PyV8在Python爬虫中执行js代码
2017/02/16 Python
详谈Pandas中iloc和loc以及ix的区别
2018/06/08 Python
pygame游戏之旅 添加游戏暂停功能
2018/11/21 Python
python快速编写单行注释多行注释的方法
2019/07/31 Python
Python Web框架之Django框架Model基础详解
2019/08/16 Python
Python内置方法和属性应用:反射和单例(推荐)
2020/06/19 Python
英国在线女鞋目的地:SIMMI
2018/12/27 全球购物
计算机通信专业推荐信
2014/02/22 职场文书
见习报告格式要求
2014/11/04 职场文书
2015年万圣节活动总结
2015/03/24 职场文书
2016入党培训心得体会范文
2016/01/08 职场文书
创业计划书之个人工作室
2019/08/22 职场文书
股东合作协议书模板2篇
2019/11/05 职场文书
linux下导入、导出mysql数据库命令的实现方法
2021/05/26 MySQL