2015-12-08 81 views
0

我遇到以下问题: 我使用foreach遍历有效对象数组。当试图访问结果对象或它们的属性时,我收到了我将尝试访问非对象的通知。PHP尝试获取有效对象的非对象属性

下面是代码:

$schema = json_decode($_POST['d']); 
foreach ($schema->node as $node) { 
    var_dump($node); 
    if ($node->status == 1) { 
     $data = $node->id; 
    } 
} 

的var_dump输出以下:预先

object(stdClass)#5 (6) { 
    ["status"]=> 
    int(0) 
    ["id"]=> 
    int(1) 
    ["title"]=> 
    string(6) "Sensor" 
    ["script"]=> 
    string(24) "from eZness import swag;" 
    ["x"]=> 
    int(60) 
    ["y"]=> 
    int(80) 
} 

感谢。

UPDATE:

$schema = json_decode($_POST['d']); 
foreach ($schema->node as $node) { 
    var_dump($node); 
    echo $node->status; //Funnily this works 
    $status = $node->status; //while this doesn't 
    if ($node->status == 1) { //and this doesn't as well 
     $data = $node->id; 
    } 
} 

但在取出时的var_dump甚至回声不工作了。

更新: 已解决。看看应用程序的客户端部分,在$ schema-> node数组中推入NULL值时出现问题,这当然是非对象。

+0

@MinaAbadir是正确的,你'你的php'ed JSON对象缺少'data'属性。否则,你并没有添加你所指的正确的数据对象...... –

+0

但是'$ node'之后被正确地转储了,所以'$ schema'应该没问题。可能这个代码子集很好。 –

+0

1)请向我们展示您获得的完整错误消息2)您的代码是否仅循环1次迭代?或者你有更多的对象,你看错了3)另外,如果你做'var_dump();'请从源代码的输出,并在这里发布 – Rizier123

回答

0

您正在尝试访问$node->data,这不存在。

+0

它确实存在,它是传入的JSON的一部分串。 –

+0

它没有打印在var_dump中。 –

+2

这将产生“未定义的属性”通知,而不是“非对象”通知。 – lafor

相关问题