$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. Windows 8.1 RTM初体验

    Windows 8.1正式发布在10月17日,现在可以在MSDN/TechNet进行订阅下载. 操作系统版本号和Windows Server 2012 R2保持一致. 开始屏幕动态磁贴现在有4种尺寸可 ...

  2. Java数据类型BooleanDemo

  3. iOS 之使用CAShapeLayer中的CAGradientLayer实现圆环的颜色渐变

    本文转载自:http://blog.csdn.net/zhoutao198712/article/details/20864143 在 Github上看到一些进度条的功能,都是通过Core Graph ...

  4. c++,public/protected/private权限修饰符

    1.public的变量可以在类中以及外部访问到: 2. private只可以在类/友元中访问到. #include <iostream> using namespace std; //-- ...

  5. 如何用vs查看结构体布局

    今天遇到一个问题: 假设在每个系统的structA 结构不同,我们在windbg看了以后直接拿来用,自己定义成结构体,如何来验证这个结构体内存布局是否和windbg一致. 当然笨办法是自己一个个成员数 ...

  6. QT5.6所开放的7个新模块(图表,虚拟键盘,性能分析,静态分析,测试正好,2D渲染)

    The modules newly available to open source users are: Qt Charts Qt Data Visualization Qt Virtual Key ...

  7. jquery 单击li防止重复加载的实现代码

    因为加载内容比较慢,所以用户可能在li上不经意点击了两次,那么就会请求两次,这是我们不想看到的. 今天在javascript-jquery群上一筒子发了两个demo给我,他的方法是先将单击的li节点拷 ...

  8. 第2次增加ssh 主机信任脚本

    dr-mysql01:/root# cat a1.sh #用户名 uname="$1" #密码 passwd="$2" #执行检测并安装expect模块 ep= ...

  9. 黑马程序员 ---> 正则表达式

    --------------- ASP.Net+Android+IO开发S..Net培训.期待与您交流! --------------- 正则表达式 一.概述: 1.概念:符合一定规则的表达式. 2. ...

  10. Duanxx的C++得知:计算位数

    一旦计算出一个数值数字,基本上它是不断分裂使用10.重新计,看看有多少个数字. 今天发现能够考虑先将数字转换为字符串,然后通过string.length获得数值的位数,这样做方便的多. string ...