找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 88|回复: 0
打印 上一主题 下一主题

php使用json_encode对变量json编码

[复制链接]

2588

主题

2588

帖子

7694

积分

论坛元老

Rank: 8Rank: 8

积分
7694
跳转到指定楼层
楼主
发表于 2018-2-14 05:59:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

            在 ajax 横行的今天,json 顺理成章地成为了前后端交互一个极其重要的工具。对于 PHP 来说,通常使用 json_encode 方法将一个 PHP 组数,转换成前端可以解析的 json 字符串,这也是 PHP 手册上描述的内容,但事实是这样的吗?看看下面这段代码:
[U]复制代码[/U] 代码如下:
$a = array( 'Jack' , 'Sam' , 'Tom' );
echo json_encode( $a );
当 JavaScript 请求到上面的代码,PHP 将解析数组 $a 为 json 字符串并返回到前端,但事实上在前端拿到的返回结果却是一个数组。
[U]复制代码[/U] 代码如下:
[ "Jack" ,  "Sam" ,  "Tom" ]
这个结果对于前端来说也许并不是所期望的,对于 JavaScript 来说,数组和 json 的关系非常密切,甚至可以简单地把 json 理解为关联数组,但这并不意味着二者可以划等号,比如 json 没有 length 属性,也不能进行数字索引,json 是键值对,而 JavaScript 的数组严格说来是没有"键"的,这和 PHP 的差异比较大。那么为什么 json_encode 的返回结果是数组呢?
本文开头的 PHP 代码中的数组是严格意义上的数字索引数组,json_encode 方法在处理这样的数组的时候会返回数组字符串,它需要同时满足两个条件:1. 数字索引数组,2. 索引值从 0 开始。这意味着下面的代码也会返回同样的结果:
[U]复制代码[/U] 代码如下:
$b = array(
'0' => 'Jack',
'1' => 'Sam',
'2' => 'Tom'
);
echo json_encode( $b );
这两个条件的任意一个没有获得满足,那么 json_encode 方法才真正的返回 json 字符串:
[U]复制代码[/U] 代码如下:
$c = array(
'person-1' => 'Jack',
'person-2' => 'Sam',
'person-3' => 'Tom'
);
echo json_encode( $c );
这时前端得到的结果如下:
[U]复制代码[/U] 代码如下:
{
'person-1' : 'Jack',
'person-2' : 'Sam',
'person-3' : 'Tom'
};
            
            
您可能感兴趣的文章:
  • 用php实现像JSP,ASP里Application那样的全局变量
  • php后台程序与Javascript的两种交互方式
  • PHP JSON格式数据交互实例代码详解
  • php和javascript之间变量的传递实现代码
  • 解析Extjs与php数据交互(增删查改)
  • PHP与javascript实现变量交互的示例代码
  • js获取php变量的实现代码
  • php解析http获取的json字符串变量总是空白null
  • PHP变量赋值、代入给JavaScript中的变量
  • PHP与JavaScript针对Cookie的读写、交互操作方法详解
  • php变量与JS变量实现不通过跳转直接交互的方法
            
  • 分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    用户反馈
    客户端