Зацикливание PHP через многоуровневый Alphavantage API JSON

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

Я хочу иметь возможность выводить каждое «открытое» значение, которое возвращается в JSON с датой. Добавил дополнительную информацию в вопрос. Спасибо

TAS1987 07.04.2019 20:49

А как же foreach( $arr['Time Series (Daily)'] AS $date => $results) { foreach( $results AS $key => $value ) { echo '<br>For ' . $key . ' on ' . $date . ' the value is ' . $value; } }

random_user_name 07.04.2019 20:49

@cale_b Это отличная помощь. Дайте мне достаточно, чтобы начать понимать, как решить проблемы, с которыми я столкнулся, чтобы достичь своей цели и, надеюсь, продолжить проект. Хотите добавить это в качестве ответа, и я +1. Спасибо.

TAS1987 07.04.2019 20:55
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
3
541
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вам нужно декодировать 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; 
        } 
    }
}

Другие вопросы по теме