Мне нужно перебрать один большой элемент в объекте 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
как будто его даже не было, как в первом ответе, но ничего не работает.