zoukankan      html  css  js  c++  java
  • PHP中遍历stdclass object 及 json 总结[中国航天神舟十号以json形式向地面返回数据]

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

    11

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

    $array = get_object_vars($test);

    $json= '[{"id":"1","name":"u5f20u96eau6885","age":"27","subject":"u8ba1u7b97u673au79d1u5b66u4e0eu6280u672f"},{"id":"2","name":"u5f20u6c9bu9716","age":"21","subject":"u8f6fu4ef6u5de5u7a0b"}]';

    首先要用 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:wampwww est.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":"u5f20u96eau6885","age":"27","subject":"u8ba1u7b97u673au79d1u5b66u4e0eu6280u672f"},{"id":"2","name":"u5f20u6c9bu9716","age":"21","subject":"u8f6fu4ef6u5de5u7a0b"}]';

    $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":"u5f20u96eau6885","age":"27","subject":"u8ba1u7b97u673au79d1u5b66u4e0eu6280u672f"},{"id":"2","name":"u5f20u6c9bu9716","age":"21","subject":"u8f6fu4ef6u5de5u7a0b"}]';

    $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 />";}

  • 相关阅读:
    C# 获取本地电脑所有的盘符
    C#winform程序安装在默认路径提示权限不足的问题
    BadImageFormatException异常处理
    未能找到元数据文件解决办法
    [转]DllImport属性详解
    九度oj1163题
    一致性哈希
    salt-stack部署
    查询系统支持的最大线程和进程数量
    Linux 单机测试 RS232 串口
  • 原文地址:https://www.cnblogs.com/dyllove98/p/3146800.html
Copyright © 2011-2022 走看看