Я использую 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)?

1
nullpointr 9 Июн 2014 в 16:17

3 ответа

Лучший ответ

Это должно помочь:

<?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;

?>

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

1
clami219 9 Июн 2014 в 12:32

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

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

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

0
Jim 9 Июн 2014 в 12:23

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

foreach($result as $k=>$v)
{
 .
 .
 .
}
1
thickGlass 9 Июн 2014 в 12:21