设为首页 收藏本站
查看: 500|回复: 0

[经验分享] PHP中遍历stdclass object 及 json

[复制链接]

尚未签到

发表于 2017-4-2 13:37:08 | 显示全部楼层 |阅读模式
  (从网上找的模拟实例)需要操作的数据:

$test=Array
(
[0] => stdClass Object
(
[tags] => 最快的车,Bloodhound,SSC
[id] => 48326888
)
)


从网上查到的方法是 用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.php
on 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 />";

}

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-359195-1-1.html 上篇帖子: PHP 关于浮点数运算的问题 下篇帖子: PHP 选择排序 算法 经典面试题
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表