2

我正在尝试从 json 提要中检索数据并使用 PHP 显示。唯一的问题是某些元素将返回空。因为我在循环中有这个,所以我想返回每个帖子,但并非所有帖子都有图片、消息或评论,并作为通知返回:未定义变量。(我正在尝试从 fb 组中检索数据)

这里是设置

<?php
// Settings  
$groupID = "231809390188650";
$accessToken = "myTokenGoesHere";

// Request and parse json
$json_string = file_get_contents("https://graph.facebook.com/$groupID/feed?    access_token=$accessToken");
$parsed_json = json_decode($json_string);

for ($i = 0; $i < $json_string; $i++)   {

// Returned data 
$gImage = $parsed_json->data[i]->picture;
$gMessage = $parsed_json->data[i]->message;
$gCreated_time = $parsed_json->data[i]->created_time;
$gUpdated_time = $parsed_json->data[i]->updated_time;
$gComments_message = $parsed_json->data[i]->comments->data[i]->message;
};
?>

这是输出(粗略示例)

<h1> Facebook Group </h1>
<?php

echo "IMAGE URL : " , $gImage;
echo "MESSAGE : " , $gMessage;
echo "DATE POSTED : " , $gCreated_time;
echo "UPDATED AT : " , $gUpdated_time;
echo "COMMENTS: ", $gComments_message;

?>

有了这个我得到通知:未定义的变量:gImage等每个。我不确定为什么会这样。这是一个 json 提要的示例,它表明并非所有元素都会在其中包含某些内容。http://pastebin.com/eUJce5VT

4

1 回答 1

1

问题是这些元素并不总是存在,并且您在 PHP 中打开了 E_STRICT 错误报告(这实际上可以帮助您发现问题)。

因此,您需要确保在尝试输出之前实际设置了所有变量。另外,确保访问所有带有$前缀的变量。这可能看起来像这样:

for ($i = 0; $i < $json_string; $i++)   {
    $gImage = $parsed_json->data[$i]->picture;
    $gMessage = $parsed_json->data[$i]->message;
    $gCreated_time = $parsed_json->data[$i]->created_time;
    $gUpdated_time = $parsed_json->data[$i]->updated_time;


    if (isset($gImage))
        echo "IMAGE URL : " , $gImage;
    if (isset($gMessage))
        echo "MESSAGE : " , $gMessage;
    if (isset($gCreated_time))
        echo "DATE POSTED : " , $gCreated_time;
    if (isset($gUpdated_time))
        echo "UPDATED AT : " , $gUpdated_time;

}

请注意,我删除了 Comments 变量。您需要在第一个循环中使用单独的循环来访问所有评论。

于 2013-05-08T15:06:34.950 回答