我正在使用php的json_decode来解码一些json,但是我已经得到了/ var / log / apache / error_log:PHP致命错误:不能将字符串偏移用作数组
$data = json_decode($this->body, true);
if (is_null($data))
{
throw new Exception(...);
}
...
$foo = $data['foo']['bar']; // this line causes the fatal error
...
根据一些研究,导致错误的唯一方法是$ data是一个字符串。但由于带有$ assoc = to true的json_decode似乎保证null或数组,所以不应该这样。任何人都可以想到该代码如何可能导致错误吗?
答案 0 :(得分:1)
当然json_decode
可以返回其他类型,$assoc
与其无关。
$a = json_encode('foobar'); // returned JSON: "foobar"
$b = json_decode($a, true); // $b is a string
$a = json_encode(true); // returned JSON: true
$b = json_decode($a, true); // $b is a boolean
$assoc = true
仅表示JSON中的对象(关联数组)将被解码为PHP关联数组,而默认情况下将它们解码为PHP对象。它不会影响JSON中的任何其他类型的数据,因此如果您的根JSON元素不是数组,json_decode
也将返回非数组。