登录   注册

绚丽彩虹のPHP速成教程系列 – 第七课 – JSON

PHP教程 xlch 12个月前 (10-03) 1023次浏览 1个评论 扫描二维码

在进行项目开发的时候,总有一些数据需要保存成文件,或者存到数据库。

简单点的,像文本这样的,我们可以用file_put_contents、file_get_contents这样的函数来读取。

但是像数组这样的,我想把它保存成文件,以便于下次读取,该怎么办呢?

 

首先有这么一个思路,保存成文件,最简单的是保存成文本文件。

假设数组是这样的:

$a=['a','b','c','d','e'];

那么我们可以用implode这个函数,把数组转换成文本形式。

//implode('用作合并的文本',需要合并的数组);
$a=implode('|',$a);
echo $a;

那么这样做之后,将会输出

a|b|c|d|e

但是呢,如果是二维数组,这样显然无法满足我们的需要。

而且,如果数组里有和“用作合并的文本”相同的字符,也会引发bug。

那么,有没有一种安全保险的方法呢。

有啊,怎么可能没有嘛。就是标题里的json了。

json能够很方便的把数组或object转换为json文本。

举个栗子:

$a=['Code'=>'-1','Message'=>'错误'];
//json_encode(数组/object) 将数组/object转换为json文本
echo json_encode($a);

这样就会输出编码过的json字符串:

{"Code":"-1","Message":"\u9519\u8bef"}

可以看见,“错误”被转码成了“\u9519\u8bef”。

json只支持UTF-8,如果你用json_encode去编码一个GBK的字符串,他会不工作。

编码完成之后,我们就可以保存成文件存储了。

file_put_contents('./test.json',json_encode($a));

这样,$a这个数组就存为了test.json

那么,如何再把json文本读取成数组呢?

//json_decode('需要解码的json字符串',是否为解码为数组,false或留空则会解码成object)
$a=json_decode(file_get_contents('./test.json'),true);

这样,$a又变了回去。

 

本节内容到此结束。


绚丽彩虹 , 版权所有丨如未注明 , 均为原创丨未经允许,禁止转载
喜欢 (4)
[pay3@xlch8.cn]
分享 (0)

您必须 登录 才能发表评论!

(1)个小伙伴在吐槽
  1. 666大神 写的很和我的胃口
    天宇2017-10-04 18:09 Linux | Chrome 53.0.2785.146