1

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

それはトリックを行います。多分それを行うためのより良い方法があるでしょうか?ありがとう

4

1 に答える 1

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

内のすべてのkey -> valueペアを出力し$fqlResult[0]ます。

于 2013-11-14T07:38:48.620 に答える