今天调试php时,出现“Cannot use object of type stdClass as array”错误,虽然不是什么大错误,但也是自己写代码不用心造成的,有必要记录一下,提醒一下自己。

错误代码:

Cannot use object of type stdClass as array

含义:不能将stdClass类型的对象用作数组

解释:对象类型的变量,被当作了数组处理,所以php会抛出了错误。

错误过程:

错误的php代码

php代码:

<?php
$json = '{"name":"飞鸟慕鱼","host":"feiniaomy.com","author":"mochu"}';
$arr = json_decode($json);
// 这里输出数组中的一个元素
echo $arr['name'];
?>

输出结果:

php会抛出以下错误
Cannot use object of type stdClass as array

解决方法:

以上的代码,是利用 json_decode() 函数将一个json字符串转换成数组,并输出。但 json_decode() 函数由于没有设置第二个参数,所以输出的变量类型依然是对象,就造成以上的错误。

代码修正如下:

php代码:

<?php
$json = '{"name":"飞鸟慕鱼","host":"feiniaomy.com","author":"mochu"}';
//修改后的代码
$arr = json_decode($json,true);
echo $arr['name'];
?>

输出结果:飞鸟慕鱼