无法在PHP数组中获得价值,但var_dump显示它存在

时间:2014-04-02 08:05:37

标签: php arrays var-dump

很长一段时间,我的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);

5 个答案:

答案 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

才有可能