很长一段时间,我的PHP应用程序在带有apache和PHP的Linux服务器上运行。
现在我已经设置了一个带有apache和php的Windows服务器,而简单的PHP程序也存在问题。
var_dump($data);
die(var_dump($data['a']));
结果
object(stdClass)#1 (1) { ["a"]=> string(1) "b" }
Fatal error: Cannot use object of type stdClass as array in BLUB.php on line 14
var_dump表示有索引a。为什么$ data ['a']抛出异常?
编辑:$ data是json_decode($ something);
答案 0 :(得分:3)
因为它是一个对象,而不是一个数组。你不能这样访问它。这是正确的:
$data->a;
答案 1 :(得分:3)
错误包含您的答案 - $ data实际上是stdClass类型的对象。你可以:
a)使用$ data-> a访问属性'a' 要么 b)使用(数组)$ data
将数据类型化为数组答案 2 :(得分:2)
因为错误说$data
是一个对象,而不是一个数组。因此,您希望使用对象访问,而不是数组访问。在这种情况下,那将是var_dump($data->a)
答案 3 :(得分:2)
您应该使用:
$data = json_decode($something, true);
从json获取数组
答案 4 :(得分:1)
因为对象中的$data
,您必须以这种方式访问它:
$data->a;
否则,您可以将其类型转换为数组并实际访问它就像数组
$dataArr = (array) $data;
$dataArr['a'];
注意强>
只有您的对象属性为public