php使用json_encode对变量json编码

前端之家收集整理的这篇文章主要介绍了php使用json_encode对变量json编码前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

在 ajax 横行的今天,json 顺理成章地成为了前后端交互一个极其重要的工具。对于 PHP 来说,通常使用 json_encode 方法将一个 PHP 组数,转换成前端可以解析的 json 字符串,这也是 PHP 手册上描述的内容,但事实是这样的吗?看看下面这段代码:@H_404_1@

代码如下:
404_1@$a = array( 'Jack','Sam','Tom' );@H_404_1@echo json_encode( $a );@H_404_1@
@H_404_1@当 JavaScript 请求到上面的代码PHP 将解析数组 $a 为 json 字符串并返回到前端,但事实上在前端拿到的返回结果却是一个数组。@H_404_1@
代码如下:
404_1@[ "Jack","Sam","Tom" ]@H_404_1@
@H_404_1@这个结果对于前端来说也许并不是所期望的,对于 JavaScript 来说,数组和 json 的关系非常密切,甚至可以简单地把 json 理解为关联数组,但这并不意味着二者可以划等号,比如 json 没有 length 属性,也不能进行数字索引,json 是键值对,而 JavaScript 的数组严格说来是没有"键"的,这和 PHP 的差异比较大。那么为什么 json_encode 的返回结果是数组呢?

本文开头的 PHP 代码中的数组是严格意义上的数字索引数组,json_encode 方法在处理这样的数组的时候会返回数组字符串,它需要同时满足两个条件:1. 数字索引数组,2. 索引值从 0 开始。这意味着下面的代码也会返回同样的结果:@H_404_1@

代码如下:
404_1@$b = array(@H_404_1@'0' => 'Jack',@H_404_1@'1' => 'Sam',@H_404_1@'2' => 'Tom'@H_404_1@);@H_404_1@echo json_encode( $b );@H_404_1@
@H_404_1@这两个条件的任意一个没有获得满足,那么 json_encode 方法才真正的返回 json 字符串:@H_404_1@
代码如下:
404_1@$c = array(@H_404_1@'person-1' => 'Jack',@H_404_1@'person-2' => 'Sam',@H_404_1@'person-3' => 'Tom'@H_404_1@);@H_404_1@echo json_encode( $c );@H_404_1@
@H_404_1@这时前端得到的结果如下:@H_404_1@
代码如下:
404_1@{@H_404_1@'person-1' : 'Jack',@H_404_1@'person-2' : 'Sam',@H_404_1@'person-3' : 'Tom'@H_404_1@};@H_404_1@

原文链接:https://www.f2er.com/php/24852.html

猜你在找的PHP相关文章