php使用json_encode对变量json编码
程序员文章站
2022-07-21 13:49:08
在 ajax 横行的今天,json 顺理成章地成为了前后端交互一个极其重要的工具。对于 php 来说,通常使用 json_encode 方法将一个 php 组数,转换成前端...
在 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使用json_encode函数时不转义中文的解决方法
-
php中json_decode()和json_encode()的使用方法
-
php使用json_encode对变量json编码
-
如何使用PHP语言来编码和解码JSON对象?
-
关于php unset对json_encode的影响详解
-
php中json_encode中文编码问题分析
-
php中json_encode中文编码问题分析_PHP教程
-
php json_encode()函数中文编码乱码解决方法_PHP教程
-
PHP使用json_encode函数时不转义中文的解决方法,_PHP教程
-
php使用json_encode后出现中文乱码的解决方法