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!

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.