Доступ к первому элементу stdobject

61
5

Я использую API, где я получаю следующий ответ:

{"BTC_LTC":{"last":"0.0251","lowestAsk":"0.02589999","highestBid":"0.0251","percentChange":"0.02390438",
"baseVolume":"6.16485315","quoteVolume":"245.82513926"},"BTC_NXT":{"last":"0.00005730","lowestAsk":"0.00005710",
"highestBid":"0.00004903","percentChange":"0.16701570","baseVolume":"0.45347489","quoteVolume":"9094"}, ... }

Нет проблем с доступом к объекту, когда я знаю ключ как

$result = json_decode(file_get_contents($url));
$result->BTC_LTC->last

В моем случае я не знаю ключей XXX_XXX. Как я могу получить ключи? Я пробовал такие вещи, как $result-> {0}/$result-> [0]/$ result {0}/$ result [0] без успеха.

Как получить значения XXX_XXX (например, в примере выше BTC_LTC)?

спросил(а) 2021-01-19T15:26:44+03:00 2 месяца, 3 недели назад
1
Решение
61

Это должно сделать трюк:

<?php

$json = '{"BTC_LTC":{"last":"0.0251","lowestAsk":"0.02589999","highestBid":"0.0251","percentChange":"0.02390438",
"baseVolume":"6.16485315","quoteVolume":"245.82513926"},"BTC_NXT":{"last":"0.00005730","lowestAsk":"0.00005710",
"highestBid":"0.00004903","percentChange":"0.16701570","baseVolume":"0.45347489","quoteVolume":"9094"}}';

$result = json_decode($json);
$vars = get_object_vars($result);
$keys = array_keys($vars);

echo $vars[$keys[0]]->last;

?>

Вы можете попробовать код здесь

ответил(а) 2021-01-19T15:26:44+03:00 2 месяца, 3 недели назад
61

Используйте цикл foreach, который должен работать


foreach($result as $k=>$v)
{
.
.
.
}

ответил(а) 2021-01-19T15:26:44+03:00 2 месяца, 3 недели назад
44

Второй аргумент json_decode позволяет указать, что вы хотите вернуть массив:

$result = json_decode(file_get_contents($url),true);

Теперь этот результат представляет собой массив, который вы можете использовать как обычно (looping, array_keys и т.д.).

ответил(а) 2021-01-19T15:26:44+03:00 2 месяца, 3 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема