注意:未定义的属性:stdClass :: $ list_data

时间:2017-09-27 08:16:55

标签: php json api

我正在尝试使用API​​访问数据,并希望在HTML表格上显示数据。很多时候这段代码运行没有任何问题,但有时它显示错误 Notice: Undefined property: stdClass::$list_data Notice: Trying to get property of non-object 我在谷歌搜索这个问题,但无法解决这个问题,因为我是初学者。

<?php
    error_reporting(E_ALL);
    ini_set('display_errors', 1);
    $opts = array(
        'http' => array(
            'method' => 'POST'
        )
    );
    $context = stream_context_create($opts);
    $json = file_get_contents('https://faucethub.io/api/listv1/faucetlist?api_key=API_KEY', false, $context);
    $obj = json_decode($json);
?>

<?php
    $gg = $obj->list_data->premium->BTC;
    if (is_array($gg))
        {
        foreach(array_slice($gg, 0, 350) as $btcf)
            {
            $bh = $btcf->health;                
            echo "<tr>    
             <td>$btcf->name</td>
             <td><span class='btn btn-xs btn-success'>$btcf->reward</span></td>
             <td><span class='btn btn-xs btn-info'><i class='fa fa-clock-o'></i> $btcf->timer_in_minutes</span></td>
             <td><span class='glyphicon glyphicon-bitcoin'>$btcf->paid_week</span></td> 
             <td>$btcf->active_users</td>
            }
        }
?>

如果你有助于解决这个问题,那么我可以用它来学习新东西。如果需要任何其他信息,我可以更新它。

2 个答案:

答案 0 :(得分:0)

Notice: Trying to get property of non-object的显示表示json_decode($json);没有返回预期的对象且出错。

要检查它,你可以使用类似的东西

$obj = json_decode($json);
if (json_last_error() !== JSON_ERROR_NONE) {
    // handle json error. 
    $errorMessage = json_last_error_msg();
    echo $errorMessage;
    // or 
    // throw new Exception($errorMessage);
}

文档:

json_last_error_msg

json_last_error

答案 1 :(得分:0)

尝试类似这样的内容,而不是上一个<?php阻止:

<?php
foreach($obj as $company) {
   echo $company->name.'<br>';
   echo $company->reward.'<br>';
   echo $company->timer_in_minutes.'<br>';
   echo $company->paid_week.'<br>';
   echo $company->active_users.'<br>';
}