处理PHP JSON对象中的数据

来自JSON TwittersearchAPI的趋势数据。

抓取文件使用:

$jsonurl = "http://search.twitter.com/trends.json"; $json = file_get_contents($jsonurl,0,null,null); $json_output = json_decode($json); 

我如何使用这个对象的数据。 作为一个数组? 只需要从[name]值中提取数据。

JSON对象包含:

 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 ) 

你的意思是这样吗?

 <?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"; } 

如果你使用json_decode($string, true) ,你将不会得到任何对象,而是所有的东西都是一个关联数或索引数组。 方式更容易处理,因为PHP提供的stdObject只是一个具有公共属性的哑容器,不能用自己的function扩展。

 $array = json_decode($string, true); echo $array['trends'][0]['name']; 

只要使用它就像它是你定义的对象。 即

 $trends = $json_output->trends; 

干净的方式是:

 $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']); }