获取Undefined属性:在数组上使用foreach时的stdClass :: $选项

时间:2018-01-25 00:53:57

标签: php arrays laravel object foreach

我有一个PHP对象 - $ new_step。

在Laravel中,如果我对一个数组 - dd($new_step->data->options); - 的子对象进行了研究,我得到一个有效的条目:

array:5 [▼
  0 => {#695 ▼
    +"position": 1
    +"value": "Dogs"
  }
  1 => {#694 ▼
    +"position": 2
    +"value": "Cats"
  }
  2 => {#693 ▼
    +"position": 3
    +"value": "Ferretts"
  }
  3 => {#669 ▼
    +"position": 4
    +"value": "Gophers"
  }
  4 => {#665 ▼
    +"position": 5
    +"value": "Possum"
  }
]

然而,当我尝试对对象做一个foreach:

        foreach ($new_step->data->options as $options) {
            $options->count = 0;
        }

我收到此错误:

ErrorException
Undefined property: stdClass::$options

为什么foreach会失败?

2 个答案:

答案 0 :(得分:1)

要做到这一点foreach,您必须在变量中存储Object的结果。

$temp = $new_step->data->options;
foreach ($temp as $options) {
    $options->count = 0;
}

最后,您可以根据需要获取每个数组的列表count变量吗?

dd($temp)以下foreach检查结果。 如果您再次找不到正确的数组,可能是$new_step->data->options中有一些错误。

答案 1 :(得分:1)

事实证明,迭代中有一个数组是一个对象,而不是一个数组。为了测试,我将for循环进一步移出链并通过它测试每次迭代,以查看第5次迭代是导致错误的那个。