使用PHP收集JSON数组中的前三个条目

时间:2014-02-03 12:10:39

标签: php json

我有这个JSON数组,其中包含来自Google Analytics帐户的数据。我想收集这个数组的前三个条目并使用PHP显示。问题是,我不知道收集的关键。因为它可能会有所不同JSON看起来像这样:

"browsers": {
    "Android Browser": 721,
    "Chrome": 3362,
    "Firefox": 912,
    "Internet Explorer": 1776,
    "Mozilla": 3,
    "Opera": 190,
    "Safari": 4501,
    "Safari (in-app)": 284,
    "Mozilla Compatible Agent": 82,
    "Opera Mini": 7,
    "Amazon Silk": 3,
    "IE with Chrome Frame": 2,
    "SeaMonkey": 1,
    "KlappAppiPhone2": 8,
    "Maxthon": 3
}

所以我需要遍历这个数组并打印出键和值。 我还没那么强大的PHP,我想我可以运行一个循环并回显出每个值,如下所示:

<?php
    foreach($json->mobile as $row)
    {
        foreach($row as $key => $val)
        {
            echo $key . ': ' . $val;
            echo '<br>';
        }
    }
?>

但我收到错误Invalid argument supplied for foreach()。 在谷歌搜索该错误之后,我发现了这个片段:if (is_array($values))并且我包含了这一点,没有任何内容被回应。这不是阵列吗? 我做错了什么?

3 个答案:

答案 0 :(得分:0)

遵循这个......

  • 使用json_decode()
  • 在此上下文中您不需要两个foreach
  • 设置一个标志,以便您只显示前三个值

代码

<?php
    $json = json_decode($yourjsonstring);
    $i=0;
    foreach($json->mobile as $key => $val)
    {
        if($i<=2)
        {
            echo $key . ': ' . $val;
            echo '<br>';
            $i++;
        }

    }

答案 1 :(得分:0)

<?php
    $jsondata="your json data here";
    $mobile=json_decode($jsondata);
    foreach($mobile as $row)
    {
        foreach($row as $key => $val)
        {
            echo $key . ': ' . $val;
            echo '<br>';
        }
    }
?>

答案 2 :(得分:0)

在将JSON字符串发送到使用json_decode()函数的foreach解码之前。

例如:

$json = {
   "mobile": {
        "iPad": 30,
        "Lumia 920": 2,
        "iPhone": 105,
        "Nexus 4": 4,
        "GT-I9100": 5,
        "GT-I9300": 6,
        "GT-N8000": 1,
        "GT-P5100": 2
    }
}
$decode = json_decode($json);
foreach($decode->mobile as $key => $value) {
    echo $key . ': ' . $val;
    echo '<br>';
}