我有JSON格式的状态列表,我正在使用json_decode函数但是当我试图访问数组值时出错。
$states='{
"AL": "Alabama",
"AK": "Alaska",
"AS": "American Samoa",
"AZ": "Arizona",
"AR": "Arkansas"
}';
$stateList = json_decode($states);
echo $stateList['AL'];
致命错误:不能在第65行使用stdClass类型的对象作为数组
答案 0 :(得分:3)
你知道,json_decode()方法不会将我们的JSON作为PHP数组返回;它使用stdClass 对象来表示我们的数据。我们改为将对象键作为对象属性访问。
echo $stateList->AL;
如果你提供true作为函数的第二个参数,我们将完全接收我们的PHP数组 如预期的那样。
$stateList = json_decode($states,true);
echo $stateList['AL'];
答案 1 :(得分:3)
你将true
传递给json_decode
,就像南河所说:
$stateList = json_decode($states, true);
或更改您访问它的方式:
echo $stateList->{'AL'};
答案 2 :(得分:0)
您可以将true作为第二个参数传递给json_encode,或者将类显式转换为数组。我希望有所帮助。
答案 3 :(得分:0)
$stateList = json_decode($states);
//statelist is a object so you can not access it as array
echo $stateList->AL;
如果要在解码后得到结果数组:
$stateList = json_decode($states, true);
//statelist is an array so you can not access it as array
echo $stateList['AL'];