ошибка Undefined property: при парсинге JSON в PHP

340
12 октября 2017, 10:50

в строке foreach($decoded->data as $data) происходит ошибка Notice: Undefined property: stdClass::$data in Warning: Invalid argument supplied for foreach() почему это происходит? с другим файлом всё работает хорошо

<?php 
function removeBomUtf8($s){ 
    if(substr($s,0,3)==chr(hexdec('EF')).chr(hexdec('BB')).chr(hexdec('BF'))){ 
        return substr($s,3); 
    }else{ 
        return $s; 
    } 
} 
$urll = "https://gis-api.aiesec.org/v2/opportunities/757492.json?access_token=e316ebe109dd84ed16734e5161a2d236d0a7e6daf499941f7c110078e3c75493&&with_translations=false"; 
$content = file_get_contents($urll); 
$clean_content = removeBomUtf8($content); 
$decoded = json_decode($clean_content); 
 
echo "<table border = 1>"; 
foreach($decoded->data as $data) 
{ 
    $title = (string)$data->title; 
    $location = (string)$data->location; 
    $description = (string)$data->description; 
 
 
   echo "<tr>"; 
   echo sprintf(' <td>  %s </td><td>  %s  </td><td>  %s </td>', $title, $location, $description); 
   echo "</tr>"; 
} 
echo '</table>'; 
?>

Answer 1

Попробуйте так:

<?php
function removeBomUtf8($s){
    if(substr($s,0,3)==chr(hexdec('EF')).chr(hexdec('BB')).chr(hexdec('BF'))){
        return substr($s,3);
    }else{
        return $s;
    }
}
$urll = "https://gis-api.aiesec.org/v2/opportunities/757492.json?access_token=e316ebe109dd84ed16734e5161a2d236d0a7e6daf499941f7c110078e3c75493&&with_translations=false";
$content = file_get_contents($urll);
$clean_content = removeBomUtf8($content);
$decoded = json_decode($clean_content);
if(isset($decoded->data) && is_array($decoded->data)){
    echo "<table border = 1>";
    foreach($decoded->data as $data)
    {
        $title = (string)$data->title;
        $location = (string)$data->location;
        $description = (string)$data->description;
        echo "<tr>";
        echo sprintf(' <td>  %s </td><td>  %s  </td><td>  %s </td>', $title, $location, $description);
        echo "</tr>";
    }
    echo '</table>';
}else{
    $title = (string)$decoded->title;
    $location = (string)$decoded->location;
    $description = (string)$decoded->description;
    echo "<table border = 1>";
    echo "<tr>";
    echo sprintf(' <td>  %s </td><td>  %s  </td><td>  %s </td>', $title, $location, $description);
    echo "</tr>";
    echo '</table>';
}
?>

И подумайте над тем, чтобы верстку из php выкинуть, по крайней мере, в таком виде (через echo или в переменных).

READ ALSO
Как высчитывать и ставить высоту window в js

Как высчитывать и ставить высоту window в js

есть скрипт, он высчитывает высоту и ставит ее блоку, но если окно поменять без перезагрузки, высота остается та же, как сделать чтобы высота...

261
помощь в подключении ImageField к html файлу

помощь в подключении ImageField к html файлу

Здравствуйте! Не могу найти нормального и полного объяснения в интернете насчет ImageField в Django

167
Блок между 2мя секциями

Блок между 2мя секциями

Подсажите как сделать блок между 2мя секциями, к примеру, между хедром и нижней секцией над стыком между ними

184
Как сделать больше задержку между fade in и fade out

Как сделать больше задержку между fade in и fade out

Всем приветПодскажите пожалуйста, как в css сделать задержку между анимациями дольше, то-есть я хочу чтоб текст который появляется, дольше...

258