Print em um array Multidimensional

Olá. Recentemente me desafiei a voltar ao PHP e decidi criar um pequeno Widget onde mostra a temperatura da minha cidade.
Inicialmente eu utilizava a API do Clima Tempo, porém as informações de temperatura não batiam com a de outros sistemas, sendo assim, recorri ao OpenWeatherMap.

Meu problema se encontra na obtenção de dados referentes ao tempo (se está chovendo, ícone designado para esse evento, etc) pois essas informações estão em outro array intitulado de “weather”. Sendo assim, como posso obter as informações de um array dentro de outro? :face_with_raised_eyebrow:

stdClass Object
(
[message] => accurate
[cod] => 200
[count] => 1
[list] => Array
    (
        [0] => stdClass Object
            (
                [id] => 3455775
                [name] => Embu das Artes
                [coord] => stdClass Object
                    (
                        [lat] => -23.6496
                        [lon] => -46.8529
                    )

                [main] => stdClass Object
                    (
                        [temp] => 20.8
                        [pressure] => 1012
                        [humidity] => 100
                        [temp_min] => 20
                        [temp_max] => 23
                    )

                [dt] => 1517333520
                [wind] => stdClass Object
                    (
                        [speed] => 2.1
                        [deg] => 180
                    )

                [sys] => stdClass Object
                    (
                        [country] => BR
                    )

                [rain] => 
                [snow] => 
                [clouds] => stdClass Object
                    (
                        [all] => 90
                    )

                [weather] => Array
                    (
                        [0] => stdClass Object
                            (
                                [id] => 500
                                [main] => Rain
                                [description] => light rain
                                [icon] => 10d
                            )

                        [1] => stdClass Object
                            (
                                [id] => 701
                                [main] => Mist
                                [description] => mist
                                [icon] => 50d
                            )

                        [2] => stdClass Object
                            (
                                [id] => 300
                                [main] => Drizzle
                                [description] => light intensity drizzle
                                [icon] => 09d
                            )

                    )

            )

    )

)

PS.:
Eu consigo recuperar informações da stdClass main, onde contém temperatura, pressão e umidade com o seguinte código

$url = "http://api.openweathermap.org/data/2.5/find?q=Embu%20das%20Artes&units=metric&appid=meuAppid";
$json = file_get_contents($url);
$data = json_decode($json);

foreach ($data->list as $value) {
    echo $value->main->temp;
    echo $value->main->temp_min;
    echo $value->main->temp_max;
}

Agradeço desde já pelas informações.

Pesquisa por explode e implode.

1 curtida

Farei isso @darlan_machado. Obrigado por seu comentário dando um norte! :smile:

Após diversas horas de pesquisa, descobri que eu poderia fazer isso com um foreach dentro de outro. Sendo assim, estudei como aplicar corretamente as variáveis para não haver conflito e cheguei ao seguinte resultado:

foreach ($data->list as $list) {
    echo $list->name . ", " . round($list->main->temp) . "ºC <br>";
    echo "Min: " . $list->main->temp_min . "ºC <br>";
    echo "Max: " . $list->main->temp_max . "ºC <br>";

    foreach ($list->weather as $weather) {
        echo $weather->description;
        /* ID para chamada do ícone. Exemplo: <img src="http://openweathermap.org/img/w/<?php echo $weather->icon; ?>.png"> */
        echo $weather->icon;
    }
}