使用PHP显示3层json数组

时间:2013-12-25 14:38:00

标签: php json

我有一个json文件,我想用PHP读取,我使用下面的代码显示数据直到第二个数组,但我不知道如何获得第三个数组。下面是我的php代码和json文件,

$json = file_get_contents('data.json');
$data = json_decode($json,true);
$counters = $data['counters']['counters'];
foreach ($counters as $row)
{
echo $name = $row['name']."<br>";
}

以上代码输出 C0

我的JSON文件包含以下数据

    {
    "counters":
        {
        "id":"#F02D27B324BF41AF",
        "counterCount":14,
        "counters":[
            {
            "name":"C0",
            "total":{"request":712,"in":22982423,"out":13787213},
            "html":{"request":105,"in":2073293,"out":485846}
            },
{
            "name":"C1",
            "total":{"request":712,"in":22982423,"out":13787213},
            "html":{"request":105,"in":2073293,"out":485846}
            }]
        },
    "status":
        {
        "version":"0.0.0.2",
        "command":"getdata",
        "opf":"json",
        "error":false,
        "code":0
        }
    }

我的代码显示名称 C0 ,我想在请求中显示数据总数 并且

5 个答案:

答案 0 :(得分:1)

您可以像访问任何其他多维数组一样访问它:

echo $name = $row['html']['request']."<br>"

或迭代(即使用foreach())。

答案 1 :(得分:1)

你可以尝试这样的事情......

foreach ($counters as $row) {
    echo $name = $row['name']."<br>";
    echo $total = $row['total']['request']." ".$row['total']['in']." ".$row['total']['out']."<br>";
    echo $html = $row['html']['request']." ".$row['html']['in']." ".$row['html']['out']."<br>";
}

答案 2 :(得分:1)

您的错误是您忘记了顶级数组。您的[counters][counters]是数组,因此您需要执行以下操作:

foreach($data['counters']['counters'] as $item)
{
   foreach($item as $key=>$value)
   {
      echo('<br>'.$key.' = ');
      if(is_array($value))
      {
         foreach($value as $sub=>$number)
         {
            echo($sub.':'.$number).' ';
         }
       }
      else
         echo($value);  
   }
}

- 输出将是:

name = C0
total = request:712 in:22982423 out:13787213
html = request:105 in:2073293 out:485846 

答案 3 :(得分:0)

你应该拥有所有的东西     json_decode($ JSON,TRUE);

尝试

foreach ($counters as $key => $value) {
    if ($key == "name") {
       echo $value; // should output "C0"
    } else if ($key == "total") {
       // now the value is another array object
       echo $value["request"]; // should output 712
    } else if ($key == "html") {
       // same here
       echo $value["request"]; // should output 105
    }
}

我建议设置xdebug并跳转调试这样的东西,然后你可以检查你的$ data变量,并且可以在第一次尝试中完成所有工作:)

答案 4 :(得分:0)

谢谢大家,我解决了:) 要在total和html中显示数据,我们只需要写一个简单的行

$name = $row['total']['request'];

其输出 712