【问题标题】:Notice: Trying to get property of non-object in注意:试图获取非对象的属性
【发布时间】:2018-11-22 12:07:58
【问题描述】:

我正在学习一点 PHP。它应该打印 0,但是我收到一个错误:

注意:试图在...中获取非对象的属性

<?php 
$json = '[{"assetref":"","qty":0,"raw":0}]';

$obj = json_decode($json);
print $obj->{'qty'}; // Result 0 

?>

【问题讨论】:

  • 解决方案 "$obj[0]->{'qty'};"
  • 是的,print_r($obj); 来看看。为什么不只是$obj[0]-&gt;qty;
  • @MiguelAngelCastillo 除了数组问题之外,复杂的语法-&gt;{'qty'} 对于像数量这样的属性名称不是必需的。 -&gt;qty 可以正常工作。如果 JSON 包含的标识符不是有效的 PHP 作为属性名称,您只需要使用方括号。 (例如“资产数量”。)

标签: php arrays json


【解决方案1】:

JSON 字符串外部的方括号导致它成为数组内的对象。

你可以通过$obj[0]-&gt;{'qty'};指定你想要的数组成员来访问对象

或者更改您的 json 字符串,使其直接实例化为一个对象。

$json = '{"assetref":"","qty":0,"raw":0}';

【讨论】:

  • @AbraCadaver 因为复制/粘贴,我假设。我在编辑格式化代码时没有更改它,因为它看起来像是越界了,即使在这种情况下它毫无意义,它仍然可以工作。
猜你喜欢
  • 2013-03-05
  • 2018-09-11
  • 1970-01-01
相关资源
最近更新 更多