Я использую API от Alphavantange.co для получения стоимости акций. Мне нужно перебрать все значения, предоставляемые API.
Я вернул JSON из API и использую json_decode. Я могу получить 1 значение, например, я могу получить 63,3700 для отображения на экране, используя код ниже:
<?php
$string = file_get_contents("https://www.alphavantage.co/query?function=TIME_SERIES_DAILY_ADJUSTED&symbol=LLOY.l&outputsize=full&apikey=XXXX");
$arr = json_decode($string, true);
echo $arr['Time Series (Daily)']['2019-04-04']['1. open'].'<br>';
?>
API возвращает следующее (пример первых нескольких записей)
{
"Meta Data": {
"1. Information": "Daily Time Series with Splits and Dividend Events",
"2. Symbol": "LLOY.l",
"3. Last Refreshed": "2019-04-05",
"4. Output Size": "Full size",
"5. Time Zone": "US/Eastern"
},
"Time Series (Daily)": {
"2019-04-05": {
"1. open": "62.4500",
"2. high": "62.9000",
"3. low": "62.0800",
"4. close": "62.2100",
"5. adjusted close": "62.2100",
"6. volume": "218007230",
"7. dividend amount": "0.0000",
"8. split coefficient": "1.0000"
},
"2019-04-04": {
"1. open": "63.3700",
"2. high": "63.3800",
"3. low": "62.3500",
"4. close": "62.6200",
"5. adjusted close": "62.6200",
"6. volume": "193406609",
"7. dividend amount": "0.0000",
"8. split coefficient": "1.0000"
},
"2019-04-03": {
"1. open": "64.1200",
"2. high": "65.5400",
"3. low": "63.9300",
"4. close": "64.8800",
"5. adjusted close": "62.7400",
"6. volume": "231702090",
"7. dividend amount": "0.0000",
"8. split coefficient": "1.0000"
Я могу получить одно значение за раз, но в конечном итоге мне нужно перебрать все значения, чтобы записать их в таблицу MySQL. Как мне пройти через них, когда каждый уровень имеет другое «имя» (разную дату)?
В качестве первой помощи, как я могу вывести значение Open для каждой даты, например. 2019-04-05 62.4500 2019-04-04 63.3700 2019-04-03 64.1200
А как же foreach( $arr['Time Series (Daily)'] AS $date => $results) { foreach( $results AS $key => $value ) { echo '<br>For ' . $key . ' on ' . $date . ' the value is ' . $value; } }
@cale_b Это отличная помощь. Дайте мне достаточно, чтобы начать понимать, как решить проблемы, с которыми я столкнулся, чтобы достичь своей цели и, надеюсь, продолжить проект. Хотите добавить это в качестве ответа, и я +1. Спасибо.






Вам нужно декодировать JSON в массив, вы можете использовать функцию json_decode для преобразования JSON в массив и применения логики внутри цикла
$responseToArray = json_decode($response, TRUE);//$response is JSON
Теперь вы можете использовать цикл
foreach($responseToArray as $key => $value){
/*
Your Code here, you can further do the
loop through $value ...and so on
*/
}
Дополнительные сведения см. в Руководство по PHP.
Вы можете перебрать массив, чтобы получить доступ ко всем его элементам. Из-за структуры данных вам, скорее всего, понадобится вложенный цикл:
$arr = json_decode( $string, TRUE );
// check if the array key exists
if ( ! empty( $arr['Time Series (Daily)'] ) {
// loop over the contents of Time Series
foreach( $arr['Time Series (Daily)'] AS $date => $results ) {
// loop over the results for each date in Time Series
foreach( $results AS $key => $value ) {
echo '<br>For ' . $key . ' on ' . $date . ' the value is ' . $value;
}
}
}
Я хочу иметь возможность выводить каждое «открытое» значение, которое возвращается в JSON с датой. Добавил дополнительную информацию в вопрос. Спасибо