试图获取非对象的属性(有效的json)

时间:2015-06-15 01:12:08

标签: php json object

请一个真正快速的问题,我有这个来自我的查询的字符串

我能够使用xx = dd($sumx)显示字符串,它给了我下面的字符串:

string(124) "[{"total":-4107717.58,"alerx":4,"currentYear":-4107717.58,"lastYear":0,"date":2015,"value":{"debit":0,"credit":4107717.58}}]"

我可以通过' - >'来访问它符号,像一个对象。我使用json_decode()

转换它

我再次回应它并给我这种对象格式:

array(1) {
[0]=>
object(stdClass)#508 (6) {
  ["total"]=>
  float(-4107717.58)
  ["alerx"]=>
  int(4)
  ["currentYear"]=>
  float(-4107717.58)
  ["lastYear"]=>
  int(0)
  ["date"]=>
  int(2015)
  ["value"]=>
  object(stdClass)#509 (2) {
    ["debit"]=>
    int(0)
    ["credit"]=>
    float(4107717.58)
  }
 }
}

当我尝试访问$sumx->value时,它会给我一个`试图获取非对象的属性

我尝试通过$sumx[0]->value同样的错误访问它,我也尝试将字符串验证为http://jsonlint.com/,并说它有效。有人可以指出我的错误吗。谢谢你的时间,祝你有个美好的一天。

1 个答案:

答案 0 :(得分:1)

尝试如下: -

    <?php
$data = '[{"total":-4107717.58,"alerx":4,"currentYear":-4107717.58,"lastYear":0,"date":2015,"value":{"debit":0,"credit":4107717.58}}]';
$new_array = json_decode($data);
echo "<pre/>";print_r($new_array);
echo "<pre/>";print_r($new_array['0']->value);
echo "<pre/>";print_r($new_array['0']->value->debit);
echo "<pre/>";print_r($new_array['0']->value->credit);
?>

输出: - https://eval.in/381395

注意: - 更改仅为$new_array['0']->value