资讯专栏INFORMATION COLUMN

详解php中的json_encode()和json_decode()函数

Pines_Cheng / 2342人阅读

摘要:在介绍这两个函数之前,我还是想说一下。我们需要知道的是可以转为格式的数据类型是对象和键值对数组其次是。对格式的字符串进行解码,并转换为变量。这样我们可以很好的解释的第二个参数当为时返回数组当为默认为时返回对象。

    在介绍这两个函数之前,我还是想说一下json。不知道大家对json了解多少,感觉自己接触php一段时间后,就已经对json有些印象,但仅仅是印象而已,我只知道它是一种数据类型,比较轻量。但是对于它的结构,我真的是模糊不清,直到现在使用它,我才了解到,所以:实践是检验你是否获得真知的一种非常有效的方法。

首先是json_encode(),意思就是将数据转为json格式,那什么类型数据可以转为json格式呢

     1.对象。

     定义一个class,new一个对象,可以将对象转为json格式

class Emp {

   public $name = "";
   public $hobbies  = "";
   public $birthdate = "";

}
$e = new Emp();
$e->name = "sachin";
$e->hobbies = "sports";
$e->birthdate = date("m/d/Y h:i:s a", "8/5/1974 12:20:03 p");
$e->birthdate = date("m/d/Y h:i:s a", strtotime("8/5/1974 12:20:03"));

echo json_encode($e);
?>
结果

{"name":"sachin","hobbies":"sports","birthdate":"08/05/1974 12:20:03 pm"}
 2.数组。

 定义一个键值对数组

$arr = array("a" => 1, "b" => 2, "c" => 3, "d" => 4, "e" => 5);
echo json_encode($arr);
?>
结果

{"a":1,"b":2,"c":3,"d":4,"e":5}
我们可以知道都是转为了json格式数据,其实重点不在于结果相同,因为都是转为json么。。我们需要知道的是可以转为json格式的数据类型是对象和键值对数组

其次是json_decode()。对 JSON 格式的字符串进行解码,并转换为 PHP 变量。

先上代码

$json = "{"a":1,"b":2,"c":3,"d":4,"e":5}";

var_dump(json_decode($json));
var_dump(json_decode($json, true));
?>
打印结果

object(stdClass)#1 (5) {

["a"] => int(1)
["b"] => int(2)
["c"] => int(3)
["d"] => int(4)
["e"] => int(5)

}

array(5) {

["a"] => int(1)
["b"] => int(2)
["c"] => int(3)
["d"] => int(4)
["e"] => int(5)

}
这里我们很显然的看出第一个打印结果是一个对象,第二个是一个键值对数组。

这样我们可以很好的解释json_decode()的第二个参数:

当为true时:返回数组;当为false(默认为false)时:返回对象。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/102759.html

相关文章

  • PHP 自 5.2 到 5.6 中新增的功能详解

    摘要:本文将会介绍自起,直至中增加的新特征。弃用的功能以下几个功能被弃用,若在配置文件中启用,则会在运行时发出警告。该类的完整限定名是其中第一个反斜杠表示全局命名空间。目的在于模仿的不对,目的是为了让发布应用程序更加方便。 截至目前(2014.2), PHP 的最新稳定版本是 PHP5.5, 但有差不多一半的用户仍在使用已经不在维护 [注] 的 PHP5.2, 其余的一半用户在使用 PHP5...

    番茄西红柿 评论0 收藏0
  • PHP序列化反序列化注意什么

    摘要:和函数这两个是序列化和反序列化中数据的常用函数。序列化数组输出结果反序列化输出结果当数组值包含如双引号单引号或冒号等字符时,它们被反序列化后,可能会出现问题。序列化反序列化但是编码将增加字符串的长度。序列化数组输出结果反序列化 序列化是将变量转换为可保存或传输的字符串的过程;反序列化就是在适当的时候把这个字符串再转化成原来的变量使用。这两个过程结合起来,可以轻松地存储和传输数据,使程序...

    Tangpj 评论0 收藏0
  • JS+PHP+MYSQL处理JSON的全面总结

    摘要:结论把存入数据库前必须做次处理中文处理包含中文的字符串时,会将中文字符转换为的形式,而且通过是不能恢复的。处理特殊字符通过解决中文问题会带来新问题,的特殊字符处理。 开发过程中经常碰到要把前端的json格式的数据传递到后端php,php做一些业务处理后把数据存到mysql,然后,php再从mysql中取出数据返回到前端。虽然这是一个再基础不过的处理过程,但还是有不少问题需要认真研究。下...

    骞讳护 评论0 收藏0
  • JS+PHP+MYSQL处理JSON的全面总结

    摘要:结论把存入数据库前必须做次处理中文处理包含中文的字符串时,会将中文字符转换为的形式,而且通过是不能恢复的。处理特殊字符通过解决中文问题会带来新问题,的特殊字符处理。 开发过程中经常碰到要把前端的json格式的数据传递到后端php,php做一些业务处理后把数据存到mysql,然后,php再从mysql中取出数据返回到前端。虽然这是一个再基础不过的处理过程,但还是有不少问题需要认真研究。下...

    anRui 评论0 收藏0
  • PHP json_decode 遇到的坑

    摘要:原始数据其中是我要进行处理的字段,处理完成之后再次使用进行编码。所以正确的做法是在解码的时候不要传递第二个参数让解码结果是一个对象,然后操作对象的属性,操作完成之后再次编码就不会出现偏差。 场景:某项目客户反馈,输出的结果 JSON 中有个要求为对象的数据字段,在某些情况下返回的是 [] 而不是 {};数据由公司其他部门提供,查看原始数据的时候,没有发现任何问题;后来因为要加入某些预处...

    Ryan_Li 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<