未定义的属性:stdClass:PHP API



我使用网上找到的蜜蜂可以轻松获得股票价格:

https://keithweaverca.medium.com/using-a-stock-market-api-4ce65b7c67ac

我多次调用它来完成一个列表,我已经将它插入到一个函数中。有时随机结果会给出错误:

未定义的属性:stdClass:

if($ticker != ''){
$API_KEY = "F54SPPZ6VDOEO5TX";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,("https://www.alphavantage.co/query?function=TIME_SERIES_DAILY&symbol=".$ticker."&apikey=" . $API_KEY));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$server_output = curl_exec ($ch);
curl_close ($ch);
$result = json_decode($server_output);

$date = new DateTime(date ("Y/m/d"));
$date ->sub(new DateInterval('P1D'));


$dataForAllDays = $result->{'Time Series (Daily)'};
$dataForSingleDate = $dataForAllDays->{$date ->format('Y-m-d')};
echo $dataForSingleDate->{'1. open'} . '<br/>';


} else{
echo "Errore API ";
}
}  ``` 
The error is on the $ dataForAllDays, the lines are for getting yesterday's day (they work)

根据我对该代码的测试,当您使用的$ticker变量无效时,就会发生这种情况。

例如,尝试用XXX的股票代码发出请求,会在$result中得到以下值:

object(stdClass)#1 (1) {
["Error Message"]=>
string(125) "Invalid API call. Please retry or visit the documentation (https://www.alphavantage.co/documentation/) for TIME_SERIES_DAILY."
}

在这种情况下,我会得到完整的警告消息:

Warning: Undefined property: stdClass::$Time Series (Daily)

这是有意义的,因为来自API的响应不具有Time Series (Daily)字段。

解决方法是在继续之前验证您从API接收的响应是否以您可以处理的方式格式化(例如,检查isset($result->{'Time Series (Daily)'})(。

最新更新