PHP解码JSON错误

时间:2011-09-11 06:47:21

标签: php arrays json

function getNews()
{
    $bloggerDataStr = file_get_contents("http://www.blogger.com/feeds/3018390933290471377/posts/default/-/comp?alt=json");
    $bloggerDataArr = json_decode($bloggerDataStr);

    $html .= '<ul>';

    foreach($bloggerDataArr->feed->entry as $entry)
    {
        $html .= '<li>';
        $html .= '<h1>'.$entry->title->$t.'</h1>';
        $html .= '<time>'.$entry->published->$t.'</time>';

        $html .= '<section>'.$entry->content->$t.'</section>';

        $html .= '</li>';
    }

    $html .= '</ul>';

    return $html;
}

我在“

”中收到“致命错误:无法访问空属性”
$entry->title->$t.

我相信我的代码是正确的,我不明白有什么不对。救命?感谢

3 个答案:

答案 0 :(得分:3)

$t是PHP中的变量名。试试$entry->title->{'$t'}

答案 1 :(得分:0)

尝试使用var_dump检查您要查找的属性

答案 2 :(得分:0)

可能这不是最优雅的解决方案,但它对我有用: 由于问题是参数名称中的美元符号,请尝试用$ entry-&gt; title-&gt; {chr(36)替换“$ entry-&gt; title-&gt; $ t”。 't'}

这是您编辑的代码:

$bloggerDataStr = file_get_contents("http://www.blogger.com/feeds/3018390933290471377/posts/default/-/comp?alt=json");
$bloggerDataArr = json_decode($bloggerDataStr);

$html .= '<ul>';

foreach($bloggerDataArr->feed->entry as $entry)
{
    $html .= '<li>';
    $html .= '<h1>'.$entry->title->{chr(36) . 't'}.'</h1>';
    $html .= '<time>'.$entry->published->{chr(36) . 't'}.'</time>';

    $html .= '<section>'.$entry->content->{chr(36) . 't'}.'</section>';

    $html .= '</li>';
}

$html .= '</ul>';

return $html;