Получение образования с помощью API-интерфейса Facebook в PHP

Я пытаюсь получить информацию об образовании из графического API-интерфейса Facebook, используя stdclass. вот массив:

"username": "blah", "education": [ { "school": { "id": "[removed]", "name": "[removed]" }, "year": { "id": "[removed]", "name": "[removed]" }, "type": "High School" }, { "school": { "id": "[removed]", "name": "[removed]" }, "year": { "id": "[removed]", "name": "[removed]" }, "type": "College" } ], 

Как я могу использовать PHP, чтобы выбрать тот, у кого есть тип «колледж»? Вот что я использую для чтения:

  $token_url = "https://graph.facebook.com/oauth/access_token?" . "client_id=[removed]&redirect_uri=[removed]&client_secret=[removed]&code=".$_GET['code'].""; $response = file_get_contents($token_url); parse_str($response); $graph_url = "https://graph.facebook.com/me?access_token=" . $access_token; $user = json_decode(file_get_contents($graph_url)); 

Таким образом, имя будет $ user-> name.

Я попробовал школу $ user-> education->, но это не сработало.

Любая помощь будет оценена по достоинству.

Благодаря!

Образование в вашем документе JSON представляет собой массив (обратите внимание, что его элементы окружены [] ), поэтому вам нужно сделать следующее:

 // To get the college info in $college $college = null; foreach($user->education as $education) { if($education->type == "College") { $college = $education; break; } } if(empty($college)) { echo "College information was not found!"; } else { var_dump($college); } 

Результатом будет что-то вроде:

 object(stdClass)[5] public 'school' => object(stdClass)[6] public 'id' => string '[removed]' (length=9) public 'name' => string '[removed]' (length=9) public 'year' => object(stdClass)[7] public 'id' => string '[removed]' (length=9) public 'name' => string '[removed]' (length=9) public 'type' => string 'College' (length=7) 

Более простым способом было бы использовать json_decode со вторым параметром, установленным в true, что заставляет результаты быть массивами, а не stdClass.

 $user = json_decode(file_get_contents($graph_url), true); 

Если вы переходите с массивами, вам нужно изменить поиск колледжа foreach:

 foreach($user["education"] as $education) { if($education["type"] == "College") { $college = $education; break; } } 

и результатом будет:

 array 'school' => array 'id' => string '[removed]' (length=9) 'name' => string '[removed]' (length=9) 'year' => array 'id' => string '[removed]' (length=9) 'name' => string '[removed]' (length=9) 'type' => string 'College' (length=7) 

Хотя оба действительны, на мой взгляд, вы должны использовать массивы, они легче и гибче для того, что вы хотите сделать.