Получение результатов массива декодирования json - PullRequest
0 голосов
/ 06 мая 2019

Итак, я успешно получил доступ к результатам:

    $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 голосов
/ 06 мая 2019

Основываясь на дампе $ результатов, которые вы даете в комментариях, вы фактически пытаетесь использовать объект, а не массив элементов.

Вы можете просто получить доступ к методам и свойствам объекта напрямую, например:

$results->myDataResultOne

и именно поэтому вы получаете его правильно, когда пытаетесь сбросить его.

Когда вы пытаетесь выполнить итерацию объекта, вы входите в область итерация объекта , и в итоге вы выполняете итерацию своей структуры obj с шаблоном key => value.В вашем случае вы могли бы сделать:

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 ()
}

Обратите внимание, что я написал этот код в памяти, и он может быть неправильным, но он должен дать вам несколько советов.

0 голосов
/ 06 мая 2019

Обновление

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

с

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