我正在使用PHP库(亚伯拉罕的OAUTH)作为连接到我的Twitter帐户的应用程序,我正在从Twitter的API中下载我自己的推文,试图在我的页面上美化显示它们。
我用foreach循环遍历它们
<?php
foreach ($statuses as $key => $status) {
echo '
<blockquote class="twitter-tweet" data-lang="en"><p lang="und" dir="ltr">' . $status->text . '</p>
' . $status->name . ' (@' . $status->screen_name . ') <a href="https://twitter.com/' . $status->screen_name . '/status/' . $status->id_str . '">' . $status->created_at . '</a></blockquote><script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script><br>
';
}
?>
这些来自var_dump,是我正在使用的
array(1) { [0]=> object(stdClass)#3 (25) { ["created_at"]=> string(30) "Fri May 18 10:41:07 +0000 2018" ["id"]=> int(997426852204634112) ["id_str"]=> string(18) "997426852204634112" ["text"]=> string(27) "lol" ["name"]=> string(6) "Example" ["screen_name"]=> string(10) "Example_Name"
但是我得到了回复:
注意:未定义的属性:stdClass :: $ name
注意:未定义的属性:stdClass :: $ screen_name
这是为什么?我在var_dump中看到name和screen_name,为什么它无法接收它们?
答案 0 :(得分:0)
这只是一个通知,标志着该结构没有财产。 你有几个解决方案:
检查属性是否存在,仅在确实存在时才回显它。 E.g:
isset($status->screen_name) ? $status->screen_name : '';
您可以在输出之前规范化数据:如果属性不存在,只需使用默认值初始化该属性:
$status->screen_name = isset($status->screen_name) ? $status->screen_name : '';
<强>更新强>
在您的情况下,您尝试访问错误的节点:
"screen_name"
是stdClass对象user
的节点,它是状态对象的子节点。因此,您需要致电$status->user->screen_name
。