JSON用法之将PHP数组转JS数组,JS如何接收PHP数组


Posted in PHP onOctober 08, 2015

首先下载下面这个文件(这是一段是别人写出来专门解析json的代码),然后引入这个文件!

    http://pan.baidu.com/s/1dD8qVr7

    现在当我们需要用ajax与后台进行交互时,怎样将php的数组传送到js文件并且并js所识别?

JSON用法之将PHP数组转JS数组,JS如何接收PHP数组

    先看php文件,当我们获取到$arr这个数组后

foreach ($arr as $value) {
  $json .= json_encode($value) . ',';
} 
echo '[' . substr($json,0,strlen($json) - 1) . ']';

json_encode()是将$arr的每一个值进行json编码,然后我们想输出一个json的数组,所以我们将每个编译后的值后面加一个逗号并且最后在所有值外面加上'[]',这是json数组的格式,注意因为我们在将每一个值进行json编码后都加上一个逗号在后面,这样就导致最后所有值合并数组时多一个逗号,所有我们得用substr()函数将其最后一个逗号去掉!

    然后我们来看js文件

当我们用arr接受到php文件传输的json数组后

var json = JSON.parse(arr);

JSON是咱们开始下载那个文件中定义的一个对象,我们用它的parse方法将json数组转化成js的数组!这是变量json接受到的是一个js数组所以直接不能打印出来,你可以遍历这个json数组或者json[0]来输出!

其实,说白了咱们将php数组转化成js数组的思路就是利用json这个中间量来实现!当然你也可以只用php和js来实现数组的转化,方法不止一种!

PHP数组和Json之间的转换

之所以要用到Json,很多时候是因为使用ajax对象时,程序与JS函数之间的数据交互。因为JS不认识PHP中的数组,PHP也不认识JS中的数组或对象。Json很好的解决了这个问题。

Json简介

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于JavaScript的一个子集,这意味着JavaScript可以直接读取Json,非常方便。

Json的具体形式是:

1.对象

对象是一个无序的“‘名称/值'对”集合。一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值' 对”之间使用“,”(逗号)分隔。

例如: {“username”: “Eric”,”age”:23,”sex”: “man”}

代码示例:

<script type="text/javascript">  function getUser()
{
  var  user = {
  "username": "Eric",
  "age":23,
  "family": {"mother":"Marry","father":"Alon","brother":"Tom"}
  };  alert( user.username );  alert( user.age );  alert(user.family.brother);
}  getUser();  </script>

2、数组

数组是值(value)的有序集合。一个数组以“[”(左中括号)开始,“]”(右中括号)结束。值之间使用“,”(逗号)分隔。

例如: ["Eric",23, "man"]

代码示例:

<script type="text/javascript">  function getArray() 
{  
var arr = ["Jarry",23, ["www.xiaophper.com","wxyh_999@126.com"]];  
alert(arr[0]);  alert(arr[1]);  alert(arr[2][0]); 
alert(arr[2][1]);  
}  
getArray();  
</script>

注意:对象和数组两种形式在JS中的调用时不一样啊,对象用“.”调用,数组用下标[0]、[1]调用。还要注意在传递Json串时string类型的值要用引号括起来。

PHP中将数组转变成Json

强大的PHP已经提供了内置函数:json_encode() 和 json_decode()。很容易理解,json_encode()就是将PHP数组转换成Json。相反,json_decode()就是将Json转换成PHP数组。

例如:

$array = array("name" => "Eric","age" => 23); 
echo json_encode($array);

程序将打印出 :

{“name”:”Eric”,”age”:23}

再看下面的例子:

$array = array(0 => "Eric", 1 => 23); 
echo json_encode($array);

程序将打印出 :["Eric",23]

以上两个例子可以看出,如果PHP数组的键都是数字,那么json_encode()返回一个数组形式的Json,如果PHP数组的键全是字符串。那么json_encode()就会返回一个对象形式的Json。刚已经说过。两者在js中的调用是不同的。

事实上,只要在PHP数组的键中有一个字符串形式的键,那么json_encode()就会返回对象形式的Json。这是不正确的。因为,虽然在PHP代码中不会出现错误,但要是将这样的Json传给JS函数,JS会将此Json当做一个对象,而对象是不可能以数字作为属性名的。也就是说JS 不知道这是什么 : user.0.username  (中间是数字零)

PHP 相关文章推荐
收集的二十一个实用便利的PHP函数代码
Apr 22 PHP
PHP中文URL编解码(urlencode()rawurlencode()
Jul 03 PHP
php中通过curl模拟登陆discuz论坛的实现代码
Feb 16 PHP
基于Discuz security.inc.php代码的深入分析
Jun 03 PHP
destoon安装出现Internal Server Error的解决方法
Jun 21 PHP
PHP数组与对象之间使用递归实现转换的方法
Jun 24 PHP
php根据生日计算年龄的方法
Jul 13 PHP
详解php中空字符串和0之间的关系
Oct 23 PHP
php基于curl实现的股票信息查询类实例
Nov 11 PHP
thinkphp修改配置进入默认首页的方法
Feb 07 PHP
php 读写json文件及修改json的方法
Mar 07 PHP
PHP实现一维数组与二维数组去重功能示例
May 24 PHP
php开发微信支付获取用户地址
Oct 04 #PHP
浅谈使用PHP开发微信支付的流程
Oct 04 #PHP
8个必备的PHP功能开发
Oct 02 #PHP
PHP人民币金额转大写实例代码
Oct 02 #PHP
基于OpenCart 开发支付宝,财付通,微信支付参数错误问题
Oct 01 #PHP
php中preg_match的isU代表什么意思
Oct 01 #PHP
php 利用array_slice函数获取随机数组或前几条数据
Sep 30 #PHP
You might like
PHP中的CMS的涵义
2007/03/11 PHP
php算开始时间到过期时间的相隔的天数
2011/01/12 PHP
PHP使用递归生成文章树
2015/04/21 PHP
php封装的图片(缩略图)处理类完整实例
2016/10/19 PHP
Yii 2.0在Grid中格式化时间方法示例
2017/06/06 PHP
JavaScript读取中文cookie时的乱码问题的解决方法
2009/10/14 Javascript
jquery 插件实现图片延迟加载效果代码
2010/02/06 Javascript
从零开始学习jQuery (十) jQueryUI常用功能实战
2011/02/23 Javascript
HTML长文本截取含有HTML代码同样适用的两种方法
2013/07/31 Javascript
Jquery 跨域访问 Lightswitch OData Service的方法
2013/09/11 Javascript
table对象中的insertRow与deleteRow使用示例
2014/01/26 Javascript
深入理解Javascript里的依赖注入
2014/03/19 Javascript
JavaScript中的类与实例实现方法
2015/01/23 Javascript
ionic进入多级目录后隐藏底部导航栏(tabs)的完美解决方案
2016/11/23 Javascript
一个例子轻松学会Vue.js
2017/01/02 Javascript
解决Vue2.0自带浏览器里无法打开的原因(兼容处理)
2017/07/28 Javascript
详解vue2.6插槽更新v-slot用法总结
2019/03/09 Javascript
在layui中layer弹出层点击事件无效的解决方法
2019/09/05 Javascript
JS代码屏蔽F12,右键,粘贴,复制,剪切,选中,操作实例
2019/09/17 Javascript
python函数返回多个值的示例方法
2013/12/04 Python
Python原始字符串(raw strings)用法实例
2014/10/13 Python
浅谈python中字典append 到list 后值的改变问题
2018/05/04 Python
详解python的sorted函数对字典按key排序和按value排序
2018/08/10 Python
python二维码操作:对QRCode和MyQR入门详解
2019/06/24 Python
Python中低维数组填充高维数组的实现
2019/12/02 Python
python 基于UDP协议套接字通信的实现
2021/01/22 Python
CSS3实现div从下往上滑入滑出效果示例
2020/04/28 HTML / CSS
Lulu & Georgia官方网站:购买地毯、家具、抱枕、壁纸、床上用品等
2018/03/19 全球购物
美国隐形眼镜零售商:LensPure
2019/03/10 全球购物
FORZIERI福喜利中国官网:奢侈品购物梦工厂
2019/05/03 全球购物
创联软件面试题笔试题
2012/10/07 面试题
丑小鸭教学反思
2014/02/03 职场文书
董事长秘书工作职责
2014/06/10 职场文书
一年级班主任工作总结2014
2014/11/08 职场文书
初中作文评语
2014/12/25 职场文书
个人年终总结范文
2015/03/09 职场文书