php解析json格式的文本

2020-08-30

昨天,在我校的高级培训群里,有同学咨询了如何用php解析json格式的文本问题,老师发现这个问题比较典型,在此将相关的知识点总结分享给同学们,希望对其他同学掌握该知识点也能起到一些帮助。


同学jsoly提问说,有这样的一个数组$arr(如下图所示)


想转换为php的数组,该如何处理。

一眼望去就是个json格式的字符串,显然php里面不能这样定义,这样的定义会报语法错误,就像这样:


该同学认为用json格式存储数据比较简洁,问直接用json格式定义一个数组该怎么做。

老师提示用json_decode可以将json格式的字符串直接转换为php的变量。

于是该同学发出来如下的一段代码:


希望用foreach来遍历转换后的数组$arr,结果遇到了报错:


而且我们发现这是一个致命的错误,在foreach循环当中,无法将一个类的对象转换为字符串输出。


细心的同学会发现该同学用的是js对象的表示方法,如果把json内容当成是一个大的对象,那么里面包含了cn和en两个小对象,每个小对象当中又可以拆分为1,2两个对象,典型的key-value的结构。那么我们php里面有一个函数叫get_object_vars()就是用来解析对象格式的数据。于是老师给出了带有调试信息的代码,帮助该同学理解php的解析过程(如下图所示)。


请注意程序的开头用到了php多行字符串的技术。

我们调试的时候,最好用的输出函数,就是var_dump()函数,哪里不清楚,立刻var_dump()一下,就很清晰了。

最后,我们顺着该同学的思路实现的程序如下图所示:


在foreach循环里面输出了每个子对象的值,\n是换行符,在浏览器输出的时候请注意要替换为html标签<br/>


问题到此解决,需要补充说明的是,json_decode这个函数仅能处理 UTF-8 编码的数据。


希望同学们通过这个实战的案例,能加深对json基本概念的理解并在php中学会灵活应用json格式数据。



相关文章

php解析json格式的文本

2020-08-30
那么我们php里面有一个函数叫get_object_vars()就是用来解析对象格式的数据.于是老师给出了带有调试信息的代码,帮助该同学...

记录一次PHP优化案例

2020-08-29
从告警的意思,我们知道php出现告警了,而且是叫我们增加php的,pm.start_servers, or pm.min/max_spare_servers的值.2、原因分...

[基础] 常见的http状态码及其含义,你知道多少?

2020-08-29
X:指示信息-表示请求已接收,继续处理; 100:初始的请求已接受,客户应当继续发送请求的其余部分...X:成功-表示请求已被成功接收、理解、接受; 200:成功,服务器已成功处理了请求,通常,这表示服务器提供了请求的网页. 201:已创建...X:重定向-要完成请求必须进行更进一步的操作; 300:多种选择,针对请求,服务器可执行多种操作,服务器可根据请求者选择一项操作...

编程语言的叛逃路线,猜猜 PHP 转投最多的是?

2020-08-29
编译,Erik Bernhardsson我看了一篇博客,标题是《为什么我们要从 X 语言转到 Y 语言》,具体是哪种编程语言,我忘了.于是我开...

nginx调用php-fpm的工作原理

2020-08-29
这行代码的意思是,将进入到该location内的uri请求看做是cgi程序... Php-fpm是什么:1、cgi、fast-cgi协议cgi的历史早期的webserver...

一道有意思的CTF题目

2020-08-28
将answer.php放置于web目录下,此时访问: http://10.0.106.10/tmctf2019/answer.php即可拿到flag.后记这道题目出的真的蛮有意思的...

全面剖析 PHP-FPM+Nginx 通信原理

2020-08-28
127.0.0.1:9000:这行代码的意思是,将进入到该location内的uri请求看做是cgi程序,并将请求发送到9000端口,交由php-fpm处理(...

PHP安全配置讲解

2020-08-27
PHP 配置项太多,我们不会全部说明,只会把跟安全有关的配置列出来讲解.1.2 register_globals(全局变量注册开关)配置解释: ...

最幸福的编程语言:第一名竟然是它!PHP受尽吐槽~

2020-08-27
3年龄这个年龄指标很有意思.老一辈编程人员使用较老的语言,... PHP、Java和Javascript榜上有名,且PHP又是第一名,哈哈PHP...

30秒学编程,PHP程序的 ::class 到底啥意思?

2020-08-27

随机推荐

湖湘杯2020 部分WriteUp

2020-05-27
湖湘杯 Web★题目名字不重要反正题挺简单的题目要求提交 file 参数,第一个判断判断提交内容是否为phpinfo ,提交访问之,可以在...

利用SMB绕过PHP远程文件包含

2020-05-25
将PHP phpinfo托管在目录“/var/www/html/pub”中,该目录为smb共享目录“ica”.成功托管PHP phpinfo后,使用Windows访问...

无声信息一周安全资讯:thinkphp5框架缺陷导致远程代码执行

2020-05-11
目录thinkphp5框架缺陷导致远程代码执行美国参议员称中国手机应用对美国构成了安全威胁Kubernetes被曝严重安全漏洞趋势科技发...

学习php框架的一些建议

2020-04-24
好学的:1、相对小的框架,CodeIgniter 这个最轻巧,学起来也会快.其他的框架,都要大些,代码多,功能也更强大,比如 Symfony...

PHP和MySQL实现简单的网页计数器

2020-03-31
那么您可以使用PHP和MySQL为您的网页生成一个简单的命中计数器.计数器将命中总数存储在MySQL数据库中.首先,创建一个表...

接口的安全设计要素:ticket,签名,时间戳

2020-03-22
@date 2020/12/31 */ public JSONObject login(String username,String password){ JSONObject result = new JSONObject(); ...

PHP算法面试题

2020-03-13
1.使用PHP描述冒泡排序和快速排序算法,对象可以是一个数组//冒泡排序(数组排序)function bubble_sort($array){ $count = count($...

和phh的第一年

2020-02-26
(咔嚓,拍到一只phh)一开始的几天也很普通都在走访校友就记忆犹新的是突然有一天早上她民宿被一个老大爷带着上海话疯狂敲门...

MySQL 5.6 软件安装教程

2020-02-22
打开下载好安装包,右键解压进入解压后的文件,管理员方式直接运行打开即可我接受 Next

使用Linux grep命令查找具有特定文本的所有文件

2020-01-31
artful如下图搜索包含特定单词的所有文件上面的grep命令示例列出了包含字符串artful的所有文件. 也显示了artfules,artfuled等. 使用...