Ошибка PHP декодирования JSON - PullRequest
0 голосов
/ 11 сентября 2011
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 ]

3 голосов
/ 11 сентября 2011

$t - это имя переменной в PHP.Попробуйте $entry->title->{'$t'}.

0 голосов
/ 11 сентября 2011

Возможно, это не самое элегантное из возможных решений, но оно работает для меня: поскольку проблема заключается в знаке доллара в имени параметра, попробуйте заменить "$ entry-> title -> $ t" на $entry-> title -> {chr (36).'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;
0 голосов
/ 11 сентября 2011

Попробуйте с помощью var_dump проверить свойства, которые вы ищете

...