拉取JSON解码数组结果

时间:2019-05-06 09:53:07

标签: php arrays json

因此,我成功访问了以下结果:

    $get = $this->getAllResults()->getContent();
    $pull = json_decode($get);
    $results = $pull->data->items[0];

现在,当我在

的dump()上调试时
   dump($results->myDataResultOne);die

或:

   dump($results->myDataResultTwo);die;

它访问我的结果,但在诸如以下的foreach中无法获得相同的结果:

$rows = [];

    $rows[] = array(
        "my first result",
        "my second result",
    );

    foreach ($results as $row) {
        $rows[] = array(
            $row->myDataResultOne,
            $row->myDataResultTwo
        );
    }

相反,它抛出:

  

试图获取非对象的属性

2 个答案:

答案 0 :(得分:0)

更新

foreach ($results as $row) {
        $rows[] = array(
            $row->myDataResult
        );
    }

使用

foreach ($results->myDataResult as $row) {
        $rows[] = $row;
    }

答案 1 :(得分:0)

根据您对评论给出的$ results转储,您实际上是在尝试获取一个对象,而不是一组项目。

您可以直接直接访问对象的方法和属性,例如:

$results->myDataResultOne

这就是为什么当您尝试转储它时正确获得它的原因。

当您尝试迭代一个对象时,您进入object iteration的领域,最后使用键=>值模式来迭代obj结构。 就您而言,您可以这样做:

foreach($results AS $key => $value){
  var_dump($key);  // for the first iteration, it should be "id" (string)
  var_dump($value); // for the first iteration, it should be 1 ()
}

请注意,我是在内存上编写此代码的,可能是错误的,但它应该给您一些提示。