Traverse FQL Результат на PHP
У меня много проблем с пониманием того, как работает 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 ответ
while($element = current($fqlResult[0])) {
echo "key: " . key($array);
echo "-> value: " . $element . "\n";
next($array);
}
Печатает все key -> value
пары внутри $fqlResult[0]
,