Перебирать содержимое определенного элемента в ответе JSON, используя PHP - PullRequest
1 голос
/ 29 мая 2019

Мне нужно перебрать один большой элемент в объекте JSON, который является ответом на вызов API.Одна версия API дает ответ с информацией, вложенной в большой элемент с именем statuses, а другая - нет.Я могу напечатать определенный ключ / значение на том, который не является вложенным, но у меня возникают проблемы с тем, который является.

Вот примеры каждого ответа:

Во-первых, безnesting:

    [
      {
        "created_at": "xzy",
        "id": 123abc,
        "id_str": "123abc",
        "text": "Hello world"
        ...
        ...
        ...
      },
      {
        "created_at": "xzy",
        "id": 123abc,
        "id_str": "123abc",
        "text": "Hello world"
        ...
        ...
        ...
      }
    ]

Это помещено в массив php со стандартной

`$ строкой, определенной ниже, я использую ссылку на API-интерфейс Twitter здесь

    $string = json_decode($twitter->setGetfield($getfield)
    ->buildOauth($url, $requestMethod)
    ->performRequest(),$assoc = TRUE);

Я могу вернуть все значения id с помощью простого цикла foreach, подобного этому:

    foreach ($string as $items)
    {
      echo "The id from the response is: ".$items['id']."br />";
    }

Это даст мне что-то вроде этого:

Идентификатор из ответа: 123abc

Идентификатор из ответа: abc123

Идентификатор из ответа: xyz321

...

Другая версия ответа API (та, которую мне нужно использовать) содержит аналогичную информацию, но хранится в большом элементе statuses

    {
      "statuses": [
        {
          "created_at": "xzy",
          "id": 123abc,
          "id_str": "123abc",
          "text": "Hello world"
          ...
          ...
          ...
        },
        {
          "created_at": "xzy",
          "id": 123abc,
          "id_str": "123abc",
          "text": "Hello world"
          ...
          ...
          ...
        }
      ],
      "search_metadata": {...}
    }

Когда я пытаюсь пройтись по этому json, яникогда не получайте никакого вывода.

JSON был помещен в $string с json_decode, как и раньше.

Очевидно, что информацияСтруктура так же, просто вложена в statuses.Вот что я попробовал:

    foreach($string['statuses'] as $items)
    {
      echo "The id's from the response are: ".$items['id']."br />";
    }

А также:

    foreach($string[0] as $items)
    {
      echo "The id's from the response are: ".$items['id']."br />";
    }

И:

    foreach($string as $items)
        {
          foreach ($items as $statuses => $tweets)
          {
            if (is_array($tweets))
            {
              foreach ($tweets as $t => $v)
              {
                $output[$statuses.'_'.$t] = $v
              }
            }
            else {$output[$statuses] = $tweets;}
          }

        }

     print_r($output);

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

1 Ответ

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

Этот код действительно работает.Я просто не видел выходных данных от json, потому что id - это тип данных, который не может быть объединен, по крайней мере, не так, как я это делал.Есть элемент "id" и строковая версия "id_str", и строковая версия появилась на моей веб-странице.

foreach($string['statuses'] as $items)
{
  echo "The id's from the response are: ".$items['id']."br />";
}

Для ясности, это фрагмент, который достиг моей цели:

foreach($string['statuses'] as $items)
{
  echo "The id's from the response are: ".$items['id_str']."br />";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...