json_decode()抛出"注意:试图获取非对象的属性"虽然它是一个对象

时间:2017-09-27 10:42:59

标签: php json

这是我的代码:

$upload = json_decode($upload);
if( $upload->error ){...

这是$ upload:

var_dump($upload);
object(stdClass)#3 (2) {
["error"]=> bool(false)
["status"]=> string(53) "..."
}

print_r($upload);
stdClass Object
(
    [error] => 
    [status] => ...
)

为什么if($ upload->错误)会发出通知,即使它似乎是一个对象?是错误是布尔值吗?

2 个答案:

答案 0 :(得分:1)

我现在必须努力面对自己......

上述代码 - 正如大家所指出的 - 是正确的。

我在这里分享的部分是foreach循环的一部分。设置$ upload(由于某些内部函数工作)的上述函数在第一次迭代时返回false。 (我假设)没有任何东西被转储或打印,因为在这种情况下$ upload是错误的。

当通知被抛出时。 var_dump()/ print_r()的输出来自第二次迭代。

在我的测试用例中,foreach只有两次迭代,那就是当我认为通知和对象都属于一起时......

无论如何,谢谢大家。你的评论告诉我,我不得不在别处寻找错误。

答案 1 :(得分:-2)

示例#2访问无效对象属性

通过将元素名称封装在大括号和撇号中,可以访问包含PHP命名约定下不允许的字符的对象中的元素(例如连字符)。

<?php

$json = '{"foo-bar": 12345}';

$obj = json_decode($json);
print $obj->{'foo-bar'}; // 12345

?>