【问题标题】:Traverse FQL Result on PHP在 PHP 上遍历 FQL 结果
【发布时间】:2013-11-14 05:04:37
【问题描述】:

我在理解 json 的工作原理时遇到了很多问题。我向 Facebook 创建了一个 FQL 查询,我收到了正确的响应,但我似乎无法解析它。这就是我得到的

{
  "data": [
    {
      "value": {
        "M.25-34": 3392, 
        "M.35-44": 2601, 
        "M.45-54": 1675, 
        "M.55-64": 863, 
        "M.18-24": 625, 
        "M.65+": 552, 
        "F.25-34": 531, 
        "F.35-44": 328, 
        "F.45-54": 159, 
        "M.13-17": 119, 
        "F.18-24": 104, 
        "F.55-64": 74, 
        "F.65+": 51, 
        "F.13-17": 35, 
        "U.45-54": 8, 
        "U.35-44": 3, 
        "U.25-34": 2, 
        "U.65+": 1
      }, 
      "metric": "page_fans_gender_age"
    }
  ]
}

我需要用这些值遍历数组。但我不仅需要价值观,还需要“关键”部分。我希望能够用它创建一个图表,所以我需要键+值。

我试过了:

$fqlResult = $facebook->api($param);
echo $fqlResult[0]["M.25-34"];

还有json_encode($fqlResult)json_decode($fqlResult),但没有可用的。如何获得key->value 对?

编辑

我最终设法获得了内部数组值。但是,它似乎太硬编码了。我明明取了数据数组的第一个元素并遍历它。

    foreach($fqlResult[0] as $theKey => $theValue){
    if(is_array($theValue)){
        foreach($theValue as $theKey2 => $theValue2){
                echo("The key2: " . $theKey2 . " The value2: " . $theValue2 . "<BR>");
        }// 2 level
    }// if array
}// 1 level

它成功了。也许有更好的方法来做到这一点? 谢谢

【问题讨论】:

    标签: php json facebook facebook-fql


    【解决方案1】:
    while($element = current($fqlResult[0])) {
        echo "key: " . key($array);
        echo "-> value: " . $element . "\n";
        next($array);
    }
    

    打印$fqlResult[0] 内的所有key -&gt; value 对。

    【讨论】:

    • 感谢 Stéphane 事实证明,我发布的 json 响应是一个数组,但只有两个元素:“value”和“metric”。遵循您的回答帮助我注意到了这一点。但是,我仍然需要获取第一个元素内的数据:值。我假设它们不是数组的成员,而是属性对吗?假设我不知道这些属性的名称是什么,我该如何访问它们?再次感谢。
    • 很高兴它有帮助。我认为您上次编辑中的代码是您问题的直接答案。
    猜你喜欢
    • 1970-01-01
    • 2015-10-05
    • 1970-01-01
    • 2013-07-27
    • 2016-06-07
    • 1970-01-01
    • 1970-01-01
    • 2010-11-16
    • 2021-09-15
    相关资源
    最近更新 更多