1

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

代码如下:

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

如果我在浏览器中访问 URL,一切都井井有条,但如果我使用 a var_dump(),看起来浏览器中没有显示额外的字段,是我的解码有问题还是var_dump()显示了我看不到的东西我的浏览器?

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

例如:

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

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

我尝试了几种不同的语法样式,但唯一返回任何内容的是$RAW_DATA->{'data'};,这只是打印“数组”。一旦我尝试进入下一层,我就无法打印任何东西。

4

2 回答 2

0

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

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

如果你总是知道它只有一个元素,那么它会起作用,否则你应该遍历 $RAW_DATA->{'data'}。

或简化:

$RAW_DATA['data'][0]['story']
于 2012-11-06T16:12:33.877 回答
0

尝试以下操作:

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

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

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

于 2012-11-06T16:12:48.743 回答