带有JSON的PHP关联数组语法

时间:2012-11-06 16:10:01

标签: php arrays json associative

这是一个两部分问题。首先,我有代码用graph.facebook.com调用用户可以输入的参数。这会在调用时返回一个json。

代码如下:

$RAW_DATA = json_decode(file_get_contents($URL_FINAL));

如果我在浏览器中找到URL,一切都很有条理但是如果我使用var_dump(),看起来浏览器中没有显示额外的字段,我的解码是否有问题或是{ {1}}显示我在浏览器上看不到的内容?

其次,在检索JSON之后,试图访问其中的数据子域已经证明是有问题的。

例如:

var_dump()

这是URL返回的内容,我如何从中提取“故事”?

我尝试了几种不同的语法样式,但唯一返回任何内容的是 { "data": [ { "id": "11111111_111111111", "from": { "name": "John", "id": "111111111" }, "story": "John shared We Are Change's photo.", "picture": "http://photos-e.ak.fbcdn.net/hphotos-ak-prn1/35552_10151311513538690_352701444_s.jpg", "link": "http://www.facebook.com/photo.php?fbid=10151311513538690&set=a.10150159213018690.338979.86518833689&type=1", "name": "Timeline Photos", "caption": "Happy election day everybody!", "properties": [ { "name": "By", "text": "We Are Change", "href": "http://www.facebook.com/WeAreChange.org?ref=stream" } ] } ,这只是打印'Array'。一旦我尝试进入下一层,我就无法进行任何打印。

2 个答案:

答案 0 :(得分:0)

那是因为“data”是一个对象(或关联数组)的数组。

$RAW_DATA->{'data'}[0];

如果你总是知道它只有一个元素,那就行了,否则你应该遍历$ RAW_DATA-> {'data'}。

或简化:

$RAW_DATA['data'][0]['story']

答案 1 :(得分:0)

尝试以下方法:

var_dump($RAW_DATA['data']);
var_dump($RAW_DATA['data']['id']);

这会将$ RAW_DATA视为一个数组,并且可以正常工作。

$ RAW_DATA->数据会将其视为对象,并且会失败。