在PHP上遍历FQL结果

时间:2013-11-14 05:04:38

标签: php json facebook facebook-fql

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

{
  "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

它可以解决问题。也许有更好的方法可以做到这一点? 感谢

1 个答案:

答案 0 :(得分:1)

while($element = current($fqlResult[0])) {
    echo "key: " . key($array);
    echo "-> value: " . $element . "\n";
    next($array);
}

key -> value内打印所有$fqlResult[0]对。