这是我的代码
public function getAllCountries() {
$countries = array();
$response = $this->client->get($this->geoCountryAPIURL, [
'query' => ['username' => $this->username]
]);
$body = json_decode($response->getBody()->getContents());
if ($response->getStatusCode() == 200) {
if (array_key_exists('geonames', $body)) {
$dataRespone = $body->geonames;
// error or status response
foreach ($dataRespone as $country)
{
$countries[] = array(
'geonameId' => $country->geonameId,
'countryName' => $country->countryName
);
}
}
}
return $countries;
}
在我的PHP错误日志中,我收到此错误:
PHP致命错误:不能在第35行使用stdClass类型的对象作为数组
第35行
if ($response->getStatusCode() == 200) {
答案 0 :(得分:0)
json_decode()
会返回一个对象,除非您将true
作为第二个参数传递。
即使它说错误在第35行,它也可以在下一行。错误消息并不总是100%正确,但通常会为您提供一个良好的起点。
所以,它实际抱怨的路线可能是这样的:
if (array_key_exists('geonames', $body)) {
..因为$body
是一个对象。
将该行更改为:
if (property_exists($body, 'geonames)) {
......它应该有用。
您确定:foreach ($dataRespone as $country)
是否正确?我不知道响应是什么样的,但是:foreach ($dataRespone->geonames as $country)
似乎更有可能。据我所知,你不能循环StdClass
- 对象。