php使用json_encode对变量json编码

在 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'
};

(0)

相关推荐

  • php和javascript之间变量的传递实现代码

    PHP variable to Javascript variable: 复制代码 代码如下: <?php $myvar=10; ?> <script type="text/javascript"> jsvar = <?php echo $myvar; ?>; document.write(jsvar); // Test to see if its prints 10: </script> Form variable to Javascr

  • php变量与JS变量实现不通过跳转直接交互的方法

    本文实例讲述了php变量与JS变量实现不通过跳转直接交互的方法.分享给大家供大家参考,具体如下: 大家都知道如果JS变量要获取后台传来的php变量可以这么写: <?php $aaa = '111';?> var aaa = <?php echo $aaa;?>; 那么我们如何将js变量的值直接付给php变量呢 第一种方法也是最常见的方法: 无刷新:使用ajax传参 有刷新:直接跟表单一起提交或者直接跟在跳转链接的后面. 现在我来说一下第二种传值方式: 示例为对js变量进行日期处理:

  • PHP变量赋值、代入给JavaScript中的变量

    复制代码 代码如下: $(document).ready(function(){ <?php $f="'name'"?>     var t=<?php echo $f?>;     alert(t)    }) 或 复制代码 代码如下: $(document).ready(function(){ <?php $f="name"?>     var t="<?php echo $f?>";    

  • php后台程序与Javascript的两种交互方式

    方法一:通过Cookie交互. 一共是三个文件,分别为:index.htm,action.php,main.htm 原理为前台页面main.htm和后台action.php通过页面框架 index.htm组织起来,将action.php的页面宽度设为0,这样并不影响显示.action.php将信息放入cookie中,main.htm通过读取 cookie来实现交互.在main.htm中也可以通过重新读取action.php 来实现控制后台CGI程序. index.htm 复制代码 代码如下: <

  • PHP与JavaScript针对Cookie的读写、交互操作方法详解

    本文实例讲述了PHP与JavaScript针对Cookie的读写.交互操作方法.分享给大家供大家参考,具体如下: 下面的例子列出几种情形交互场景,列出JS和php交互的方法.总结下,以免日后再为cookie问题困扰. <?php setcookie('php_cn_ck','php_中文_cookie'); setcookie('php_en_ck','php_english_cookie'); ?> <script src="cookie.js"></s

  • 用php实现像JSP,ASP里Application那样的全局变量

    复制代码 代码如下: <?php /**  * 功能:实现像JSP,ASP里Application那样的全局变量  * author: [url]www.itzg.net[/url]  * version: 1.0  * 版权:如许转载请保留版权声明  */ /*+----------------example---------------------- require_once("Application.php"); $arr = array(0=>"Hi&qu

  • PHP与javascript实现变量交互的示例代码

    本例是PHP和javascript交互的例子,php中的值赋给js变量中,前提是这个php变量必须有值才行,就算是假分支中. 比如php中的$flags在本例中为true,如果js中false语句写成:$title_1.innerHTML = "<?php echo $title;?>";就会出错,因为$title在php中被赋值为数组 尽管在php的flags=="false";$title是一个字符串,情况是$title是数组,而数组在字符串中也是不

  • 解析Extjs与php数据交互(增删查改)

    复制代码 代码如下: <html><head>//搜索暂时没做,数据是出来了,但是却没法显示<link rel="stylesheet" type="text/css" href="./js/resources/css/ext-all.css"/><script type="text/javascript" src="./js/jquery.js"></

  • php解析http获取的json字符串变量总是空白null

    今天同事项目中遇到一个问题,通过http接口获取的json字符串使用json_decode始终无法正确解析,返回空白. 直接把结果字符串复制出来手动创建一个变量却正常,在前端js也能解析,搞了半天不得其解,借助强大的谷歌解决了问题,答案是接口吐出的结果包含有BOM头,BOM头这个东西可谓是php的死敌啊 不说了,直接上解决办法: 复制代码 代码如下: if (substr($return, 0,3) == pack("CCC",0xef,0xbb,0xbf)) {     $retur

  • PHP JSON格式数据交互实例代码详解

    在PHP中解析JSON主要用到json_encode和json_decode两个PHP JSON函数,比PHP解析XML方便很多,下面详细介绍下PHP JSON的使用.JSON基础介绍 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式. JSON主要有两种结构: "名称/值"对的集合,在PHP中可以理解为关联数组 (associative array). 值的有序列表(An ordered list of values).在PHP中可以理解为

  • js获取php变量的实现代码

    例如下面一段j代码: 复制代码 代码如下: <script type="text/javascript">var arr="<?php echo $arr;?>"</script>

随机推荐