我使用json_decode()得到一个奇怪的错误。它正确解码数据(我看到它使用print_r),但当我试图访问数组内的信息时,我得到:
Fatal error: Cannot use object of type stdClass as array in
C:\Users\Dail\software\abs.php on line 108
我只想做:$result['context']其中$result有json_decode()返回的数据
如何读取这个数组中的值?
我使用json_decode()得到一个奇怪的错误。它正确解码数据(我看到它使用print_r),但当我试图访问数组内的信息时,我得到:
Fatal error: Cannot use object of type stdClass as array in
C:\Users\Dail\software\abs.php on line 108
我只想做:$result['context']其中$result有json_decode()返回的数据
如何读取这个数组中的值?
当前回答
改成
$results->fetch_array()
其他回答
你可以像这样将stdClass对象转换为数组:
$array = (array)$stdClass;
stdclass到数组
函数json_decode()默认返回一个对象。
你可以像这样访问数据:
var_dump($result->context);
如果你有像from-date这样的标识符(在使用上面的方法时,连字符会导致PHP错误),你必须写:
var_dump($result->{'from-date'});
如果你想要一个数组,你可以这样做:
$result = json_decode($json, true);
或者将对象转换为数组:
$result = (array) json_decode($json);
我突然得到了这个错误,因为我的facebook登录突然停止工作(我也换了主机),并抛出了这个错误。修复真的很简单
问题出在这段代码中
$response = (new FacebookRequest(
FacebookSession::newAppSession($this->appId, $this->appSecret),
'GET',
'/oauth/access_token',
$params
))->execute()->getResponse(true);
if (isset($response['access_token'])) { <---- this line gave error
return new FacebookSession($response['access_token']);
}
基本上,isset()函数期望一个数组,但它却找到一个对象。简单的解决方案是使用(array)量词将PHP对象转换为数组。下面是固定代码。
$response = (array) (new FacebookRequest(
FacebookSession::newAppSession($this->appId, $this->appSecret),
'GET',
'/oauth/access_token',
$params
))->execute()->getResponse(true);
注意在第一行中使用了off array()量词。
今天遇到同样的问题,是这样解决的:
如果你调用json_decode($somestring),你会得到一个对象,你需要访问像$ Object ->key,但如果你调用json_decode($somestring, true),你会得到一个字典,可以访问像$array['key']
使用json_decode的第二个参数使它返回一个数组:
$result = json_decode($data, true);