utilizando - sacar un valor de un json php
Manejo de datos en un objeto PHP JSON (4)
Datos de tendencias de la API de búsqueda de Twitter en JSON.
Agarrando el archivo usando:
$jsonurl = "http://search.twitter.com/trends.json";
$json = file_get_contents($jsonurl,0,null,null);
$json_output = json_decode($json);
¿Cómo trabajo con los datos de este objeto? Como una matriz? Solo realmente es necesario extraer datos de los valores de [nombre].
El objeto JSON contiene:
stdClass Object
(
[trends] => Array
(
[0] => stdClass Object
(
[name] => Vote
[url] => http://search.twitter.com/search?q=Vote
)
[1] => stdClass Object
(
[name] => Halloween
[url] => http://search.twitter.com/search?q=Halloween
)
[2] => stdClass Object
(
[name] => Starbucks
[url] => http://search.twitter.com/search?q=Starbucks
)
[3] => stdClass Object
(
[name] => #flylady
[url] => http://search.twitter.com/search?q=%23flylady
)
[4] => stdClass Object
(
[name] => #votereport
[url] => http://search.twitter.com/search?q=%23votereport
)
[5] => stdClass Object
(
[name] => Election Day
[url] => http://search.twitter.com/search?q=%22Election+Day%22
)
[6] => stdClass Object
(
[name] => #PubCon
[url] => http://search.twitter.com/search?q=%23PubCon
)
[7] => stdClass Object
(
[name] => #defrag08
[url] => http://search.twitter.com/search?q=%23defrag08
)
[8] => stdClass Object
(
[name] => Melbourne Cup
[url] => http://search.twitter.com/search?q=%22Melbourne+Cup%22
)
[9] => stdClass Object
(
[name] => Cheney
[url] => http://search.twitter.com/search?q=Cheney
)
)
[as_of] => Mon, 03 Nov 2008 21:49:36 +0000
)
¿Quieres decir algo como esto?
<?php
$jsonurl = "http://search.twitter.com/trends.json";
$json = file_get_contents($jsonurl,0,null,null);
$json_output = json_decode($json);
foreach ( $json_output->trends as $trend )
{
echo "{$trend->name}/n";
}
La manera limpia sería:
$jsonurl = ''http://search.twitter.com/trends.json'';
$json = file_get_contents($jsonurl, 0, null, null);
$json_output = json_decode($json, true);
$trends = $json_output[''trends''];
foreach ($trends as $trend) {
your_func($trend[''name'']);
}
Si usa json_decode($string, true)
, no obtendrá ningún objeto, sino todo como una matriz asociativa o numerada. Es mucho más fácil de manejar, ya que el stdObject proporcionado por PHP no es más que un contenedor tonto con propiedades públicas, que no se puede extender con su propia funcionalidad.
$array = json_decode($string, true);
echo $array[''trends''][0][''name''];
Simplemente úsalo como si fuera un objeto que definiste. es decir
$trends = $json_output->trends;