$test=Array  

    (  

        [0] => stdClass Object  

           (  

             [tags] => 最快的车,Bloodhound,SSC  

             [id] => 48326888
 

11

从网上查到的方法是  用get_object_vars 把类类型转换成数组  然后在用foreach  遍历即可

$array = get_object_vars($test);

$json= '[{"id":"1","name":"\u5f20\u96ea\u6885","age":"27","subject":"\u8ba1\u7b97\u673a\u79d1\u5b66\u4e0e\u6280\u672f"},{"id":"2","name":"\u5f20\u6c9b\u9716","age":"21","subject":"\u8f6f\u4ef6\u5de5\u7a0b"}]';

首先要用 json_decode 对 JSON 格式的字符串进行编码,

$students = json_decode($json);

直接在PHP文件用$students :

for($i=0;$i<count($students);$i++){         echo "姓名:".$students[$i]['name']."年龄:".$students[$i]['age']."专业:".$students[$i]['subject']."<br/>";    }

则报错如下:

Fatal error: Cannot use objectof type stdClass as array in D:\wamp\www\test.phpon line 18

这时候打印一下 $students :

var_dump($students);

会输出:

array(2) {

[0]=>

object(stdClass)#2 (4) {

["id"]=> string(1)"1"

["name"]=> string(9)"张雪梅"

["age"]=> string(2)"27"

object(stdClass)#3 (4) {

["subject"]=>string(24) "计算机科学与技术"

}

[1]=>

["id"]=> string(1)"2"

["name"]=> string(9)"张沛霖"

["age"]=> string(2)"21"

["subject"]=> string(12) "软件工程"

}

}

可见,返回的结果是 object 而非 array。应以对象形式访问:

foreach($students as $obj){         echo "姓名:".$obj->name."年龄:".$obj->age."专业:".$obj->subject."<br/>";    }

输出结果为:

姓名:张雪梅   年龄:27   专业:计算机科学与技术    姓名:张沛霖   年龄:21   专业:软件工程

mixedjson_decode ( string$json [, bool$assoc ] )

说明:接受一个 JSON 格式的字符串并且把它转换为 PHP 变量。

json_decode 可接收两个参数:

json:待解码的jsonstring 格式的字符串。

assoc:当该参数为 TRUE 时,将返回 array 而非 object 。

$students = json_decode($json,true);

这时打印一下 $students :

var_dump($students);

输出:

array(2) {

[0]=>

array(4) {

["id"]=> string(1)"1"

["name"]=> string(9)"张雪梅"

["age"]=> string(2)"27"

["subject"]=>string(24) "计算机科学与技术"

}

[1]=>

array(4) {

["id"]=> string(1)"2"

["name"]=> string(9)"张沛霖"

["age"]=> string(2)"21"

["subject"]=>string(12) "软件工程"

}

}

这时,$students 就是个数组了,可以直接用:

for($i=0;$i<count($students);$i++){     echo "姓名:".$students[$i]['name']."年龄:".$students[$i]['age']."专业:".$students[$i]['subject']."<br/>";}

输出结果为:

姓名:张雪梅   年龄:27   专业:计算机科学与技术    姓名:张沛霖   年龄:21   专业:软件工程

总结:

在PHP代码中处理JSON 格式的字符串的两种方法:

方法一:

$json= '[{"id":"1","name":"\u5f20\u96ea\u6885","age":"27","subject":"\u8ba1\u7b97\u673a\u79d1\u5b66\u4e0e\u6280\u672f"},{"id":"2","name":"\u5f20\u6c9b\u9716","age":"21","subject":"\u8f6f\u4ef6\u5de5\u7a0b"}]';

$students= json_decode($json);//得到的是 object

foreach($studentsas $obj){

echo "姓名:".$obj->name."&nbsp;&nbsp;&nbsp;年 龄:".$obj->age."&nbsp;&nbsp;&nbsp;专 业:".$obj->subject."<br />";}

方法二:

$json= '[{"id":"1","name":"\u5f20\u96ea\u6885","age":"27","subject":"\u8ba1\u7b97\u673a\u79d1\u5b66\u4e0e\u6280\u672f"},{"id":"2","name":"\u5f20\u6c9b\u9716","age":"21","subject":"\u8f6f\u4ef6\u5de5\u7a0b"}]';

$students= json_decode($json, true);//得到的是 array

for($i=0;$i<count($students);$i++){    echo "姓名:".$students[$i]['name']."&nbsp;&nbsp;&nbsp;年 龄:".$students[$i]['age']."&nbsp;&nbsp;&nbsp;专 业:".$students[$i]['subject']."<br />";}

PHP中遍历stdclass object 及 json 总结[中国航天神舟十号以json形式向地面返回数据]的更多相关文章

  1. PHP中遍历stdclass object 及 json

    原文:PHP中遍历stdclass object 及 json (从网上找的模拟实例)需要操作的数据: $test=Array ( [0] => stdClass Object ( [tags] ...

  2. 在论坛中出现的比较难的sql问题:5(row_number函数 分页、随机返回数据)

    原文:在论坛中出现的比较难的sql问题:5(row_number函数 分页.随机返回数据) 所以,觉得有必要记录下来,这样以后再次碰到这类问题,也能从中获取解答的思路. 1.在inner join后, ...

  3. 数组中的stdClass Object如何访问

    使用print_r($data)输出结果为 Array ( [0] => stdClass Object ( [color_item_no] => 1 [color_name] => ...

  4. PHP中把stdClass Object转array的几个方法

    方法一: 复制代码代码如下: //PHP stdClass Object转array function object_array($array) { if(is_object($array)) { $ ...

  5. ajax使用json数组------前端往后台发送json数组及后台往前端发送json数组

    1.引子 Json是跨语言数据交流的中间语言,它以键/值对的方式表示数据,这种简单明了的数据类型能被大部分编程语言理解.它也因此是前后端数据交流的主要方式和基础. 2.前端往后台传输json数据 第一 ...

  6. 02 - Unit01:服务器返回数据的json处理+搭建项目环境

    服务器返回数据的json处理+搭建项目环境 服务器返回数据的json处理 springMVC JSP响应流程 请求 -->DispatcherServlet -->HandlerMappi ...

  7. php--->把json传来的stdClass Object类型转array

    php把json传来的stdClass Object类型转array 1.Php中stdClass.object.array的概念 stdClass是PHP的一个基类,即一个空白的类,所有的类几乎都继 ...

  8. php如何遍历多维的stdClass Object 对象,php的转换成数组的函数只能转换外面一丛数组

    php如何遍历多维的stdClass Object 对象,php的转换成数组的函数只能转换外面一丛数组 (2012-09-10 19:58:49) 标签: 杂谈 分类: 网页基础知识 php如何遍历多 ...

  9. php json 解析有stdClass Object 解决办法

    php json 解析有stdClass Object mixed json_decode ( string $json [, bool $assoc = false [, int $depth = ...

随机推荐

  1. IT第六天 - eclipse快捷操作、万年历项目的编写、菱形的打印输出、代码简化

    IT第六天 上午 小项目 1.程序提前结束的退出标志 2.登录用户的模拟,给出适当的提示信息 3.根据要求,寻找规律,然后编写程序 Eclipse的使用 1.快捷键的使用 下午 中小项目 1.九九乘法 ...

  2. tomcat环境变量的配置(网上摘,全部验证通过)

    tomcat环境变量的配置   1.===> 进入bin目录下,双击startup.bat看是否报错.一般肯定会报. 2.===> 右键我的电脑===>高级===>环境变量   ...

  3. 函数嵌套 lisp表达式求值

    问题 D: lisp表达式求值 时间限制: 1 Sec  内存限制: 128 MB提交: 105  解决: 43[提交][状态][讨论版] 题目描述 lisp是一种非常古老的计算机语言,是由约翰·麦卡 ...

  4. search_word

    一个小程序,用asc码输出自己的名字.要求是,a~z两路输入,输出了一个完整的拼音之后还需要输出一个空格.—— 信息硬件过滤的雏形. module search_word ( clock , rese ...

  5. Cannot drop the database ‘XXX’ because it is being used for replication.

    删除订阅数据库的时候出现下面的错误: Cannot drop the database ‘XXX’  because it is being used for replication. 数据库的状态为 ...

  6. linux定时调度器每秒运行一次

    linux操作系统最小粒度的定时调度器仅仅能调到分钟的级别,工作中有时需在到秒的调度,所以须要自己编写脚本来实现 #!/bin/bash while [ true ]; do /bin/sleep 1 ...

  7. Android学习笔记之View(二)

    View加载的流程之测量:rootView调用measure()→onMeasure(): measure()是final方法,表明Android不想让开发者去修改measure的框架,开发者可以on ...

  8. PL/SQL连64位Oracle11g R2 win7 64旗舰环境

    说明:使用的软件版本是PL/SQL Developer 7.0.1,Oracle服务器端安装在Windows7旗舰版上. 以下是我的步骤 1,先到Oracle网站下载客户端:http://www.or ...

  9. 幻世(OurDream)2D图形引擎使用教程11——播放媒体文件(1)

    声明:本教程版权归Lizcst Software Lab所有,欢迎转载,但是转载必须保留本段声明文字,并注明文章来源:http://blog.csdn.net/kflizcst 谢谢合作! 播放媒体是 ...

  10. 开源软件实践之linux高性能服务器编程框架和选型

    很多人学习编程技术一般都通过一本编程语言的入门书籍,然后尝试做一些例子和小项目.但是这些都不能让我们深入的学习很多的编程技巧和高深技术,当然这个时候很多有经验的学习人员就会告诉大家,找一个好的开源软件 ...