Obteniendo educación con Facebook Graph API en PHP

Estoy tratando de obtener la información educativa de la API gráfica de Facebook usando stdclass. aquí está la matriz:

"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" } ], 

¿Cómo puedo usar PHP para seleccionar el que tiene el tipo “universidad”? Esto es lo que estoy usando para leerlo:

  $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)); 

Entonces el nombre sería $ usuario-> nombre.

Intenté $ user-> education-> school pero eso no funcionó.

Cualquier ayuda sería apreciada.

¡Gracias!

Solutions Collecting From Web of "Obteniendo educación con Facebook Graph API en PHP"

La educación en su documento JSON es una matriz (observe que sus elementos están rodeados por [] ), entonces lo que tiene que hacer es:

 // 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); } 

El resultado sería algo así como:

 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) 

Un truco más fácil sería usar json_decode con el segundo parámetro establecido en verdadero, lo que obliga a que los resultados sean matrices y no stdClass.

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

Si vas con matrices, tienes que cambiar la recuperación universitaria de foreach a:

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

y el resultado será:

 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) 

Aunque ambos son válidos, en mi opinión, debe ir con matrices, son más fáciles y más flexibles para lo que quiere hacer.