radrigo 180 Опубликовано: 16 мая 2020 Рассказать Опубликовано: 16 мая 2020 Всем привет. Помогите разобраться. Есть xml файл со следующим содержимым. Там показывается погода на данный момент, и вкратце на текущие сутки в 4 периода. <?xml version="1.0" encoding="utf-8"?> <info lang="ru"> <region id="20138" zoom="14" lat="54.591841" lon="22.201117"> <title>Гусев</title> </region> <traffic/> <weather climate="1" region="20138"> <source>mb3d</source> <day> <title>Гусев</title> <country>Россия</country> <time_zone>Europe/Kaliningrad</time_zone> <summer-time>1</summer-time> <sun_rise>04:23</sun_rise> <sunset>20:32</sunset> <daytime>n</daytime> <date date="2020-05-16T00:00:00Z"> <day weekday="сб">16</day> <month name="мая">5</month> <year>2020</year> <daytime>n</daytime> </date> <day_part typeid="4" type="ночь"> <weather_type>облачно с прояснениями</weather_type> <weather_code>cloudy</weather_code> <image>https://yastatic.net/weather/i/icons/blueye/24/bkn_n.png</image> <image-v2 size="22x22">http://yandex.st/weather/v-1/i/icons/22x22/bkn_n_+6.png</image-v2> <image-v3 size="48">https://yastatic.net/weather/i/icons/blueye/48/bkn_n.png</image-v3> <image_number></image_number> <wind_speed>2.3</wind_speed> <wind_direction id="sw">юго-запад</wind_direction> <dampness>70</dampness> <hectopascal>1007</hectopascal> <torr>755</torr> <pressure>755</pressure> <temperature class_name="t8" color="F3F1E3">+7</temperature> <time_zone>Europe/Kaliningrad</time_zone> <observation_time>22:00</observation_time> <observation>2020-05-15T22:00:00</observation> </day_part> <day_part typeid="1" type="утро"> <image-v2 size="22x22">http://yandex.st/weather/v-1/i/icons/22x22/ovc_-ra_+12.png</image-v2> <image-v3 size="30">https://yastatic.net/weather/i/icons/blueye/30/ovc_-ra.png</image-v3> <temperature_from class_name="t8" color="F3F1E3">+8</temperature_from> <temperature_to class_name="t12" color="F5F2DC">+12</temperature_to> </day_part> <day_part typeid="2" type="день"> <image-v2 size="22x22">http://yandex.st/weather/v-1/i/icons/22x22/ovc_-ra_+12.png</image-v2> <image-v3 size="30">https://yastatic.net/weather/i/icons/blueye/30/ovc_-ra.png</image-v3> <temperature_from class_name="t12" color="F5F2DC">+11</temperature_from> <temperature_to class_name="t12" color="F5F2DC">+12</temperature_to> </day_part> <day_part typeid="3" type="вечер"> <image-v2 size="22x22">http://yandex.st/weather/v-1/i/icons/22x22/ovc_-ra_+10.png</image-v2> <image-v3 size="30">https://yastatic.net/weather/i/icons/blueye/30/ovc_-ra.png</image-v3> <temperature_from class_name="t10" color="F4F1E0">+9</temperature_from> <temperature_to class_name="t12" color="F5F2DC">+11</temperature_to> </day_part> <day_part typeid="4" type="ночь"> <image-v2 size="22x22">http://yandex.st/weather/v-1/i/icons/22x22/bkn_n_+8.png</image-v2> <image-v3 size="30">https://yastatic.net/weather/i/icons/blueye/30/bkn_n.png</image-v3> <temperature_from class_name="t8" color="F3F1E3">+7</temperature_from> <temperature_to class_name="t8" color="F3F1E3">+8</temperature_to> </day_part> <today><temperature class_name="t12" color="F5F2DC">+12</temperature></today> </day> <url slug="gusev">http://pogoda.yandex.ru/gusev/</url> </weather> </info> Пытаюсь вывести таким образом. Выводит почему-то только текущую погоду, а краткую погоду на дальнейшие сутки не выводит. Не получилось вообще никак вывести оттуда данные. <?php $city_id = 20138; $url = 'https://export.yandex.ru/bar/reginfo.xml?region=' . $city_id . '.xml'; $cache_xml = 'engine/cache/yandex_pogoda.xml.cache'; $ageInSeconds = 3600; if (!file_exists($cache_xml) || filemtime($cache_xml) > time() + $ageInSeconds) { $contents = file_get_contents($url); file_put_contents($cache_xml, $contents); } $xml = simplexml_load_file($cache_xml); $date_day = $xml->weather->day->date->day; $date_month = $xml->weather->day->date->month['name']; $weather_type = $xml->weather->day->day_part->weather_type; $image_v3 = $xml->weather->day->day_part->{'image-v3'}; $temperature = $xml->weather->day->day_part->temperature; $wind_speed = $xml->weather->day->day_part->wind_speed; $wind_direction = $xml->weather->day->day_part->wind_direction; $dampness = $xml->weather->day->day_part->dampness; $pressure = $xml->weather->day->day_part->pressure; $wind_direction_old = array('юг', 'север', 'запад', 'восток', 'южныйо', 'северныйо'); $wind_direction_new = array('южный', 'северный', 'западный', 'восточный', 'юго', 'северо'); echo $date_day . " " . $date_month; foreach ($xml->weather->day as $day_part) { if ($weather_type) { $wind_direction = str_replace($wind_direction_old, $wind_direction_new, $wind_direction); echo "<br><img data-src=\"" . $image_v3 . "\" alt=\"\" />"; echo "<br>" . $temperature; echo "<br>" . $weather_type; echo "<br>Ветер " . $wind_direction . " " . $wind_speed . " м/с"; echo "<br>Влажность " . $dampness . "%"; echo "<br>Атмосферное давление " . $pressure . " мм рт. ст."; } else { echo "<br>" . $image_v3; } } Может кто подскажет? Цитата Ссылка на сообщение Поделиться на других сайтах
MSK 289 Опубликовано: 16 мая 2020 Рассказать Опубликовано: 16 мая 2020 44 минуты назад, radrigo сказал: day_part Этих секций несколько, и что вы пытаетесь получить в этой строке, из какой секции? 45 минут назад, radrigo сказал: $weather_type = $xml->weather->day->day_part->weather_type; Цитата Ссылка на сообщение Поделиться на других сайтах
radrigo 180 Опубликовано: 16 мая 2020 Рассказать Опубликовано: 16 мая 2020 Автор 14 минут назад, MSK сказал: Этих секций несколько Я понимаю, что секций day_part несколько и у меня получается вывести только из первой. Из последующих четырёх секций не могу ничего вывести. Знаю что делаю что-то не так, но что, не пойму. 14 минут назад, MSK сказал: и что вы пытаетесь получить в этой строке, из какой секции? Из первой секции day_part выводит "облачно с прояснениями". Из первой секции day_part выводит "облачно с прояснениями". В последующих четверых секциях weather_type нет Цитата Ссылка на сообщение Поделиться на других сайтах
Popstop 1 Опубликовано: 16 мая 2020 Рассказать Опубликовано: 16 мая 2020 Может так? $city_id = 20138; $url = 'https://export.yandex.ru/bar/reginfo.xml?region=' . $city_id . '.xml'; $xml = simplexml_load_file($url); $wind_direction_old = array('юг', 'север', 'запад', 'восток', 'южныйо', 'северныйо'); $wind_direction_new = array('южный', 'северный', 'западный', 'восточный', 'юго', 'северо'); foreach($xml->weather->day->day_part as $day) { echo "<br>" . $day['type']; if ($day->weather_type) { echo "<br><img data-src=\"" . $day->image_v3 . "\" alt=\"\" />"; echo "<br>" . $day->temperature; echo "<br>" . $day->weather_type; echo "<br>Ветер " . str_replace($wind_direction_old, $wind_direction_new, $day->wind_direction) . " " . $day->wind_speed . " м/с"; echo "<br>Влажность " . $day->dampness . "%"; echo "<br>Атмосферное давление " . $day->pressure . " мм рт. ст."; } else { echo "<br><img data-src=\"" . $day->image_v3 . "\" alt=\"\" />"; echo "<br>" . $day->temperature_from; echo "<br>" . $day->temperature_to; } } 1 Цитата Ссылка на сообщение Поделиться на других сайтах
radrigo 180 Опубликовано: 16 мая 2020 Рассказать Опубликовано: 16 мая 2020 (изменено) Автор 18 минут назад, Popstop сказал: Может так? $city_id = 20138; $url = 'https://export.yandex.ru/bar/reginfo.xml?region=' . $city_id . '.xml'; $xml = simplexml_load_file($url); $wind_direction_old = array('юг', 'север', 'запад', 'восток', 'южныйо', 'северныйо'); $wind_direction_new = array('южный', 'северный', 'западный', 'восточный', 'юго', 'северо'); foreach($xml->weather->day->day_part as $day) { echo "<br>" . $day['type']; if ($day->weather_type) { echo "<br><img data-src=\"" . $day->image_v3 . "\" alt=\"\" />"; echo "<br>" . $day->temperature; echo "<br>" . $day->weather_type; echo "<br>Ветер " . str_replace($wind_direction_old, $wind_direction_new, $day->wind_direction) . " " . $day->wind_speed . " м/с"; echo "<br>Влажность " . $day->dampness . "%"; echo "<br>Атмосферное давление " . $day->pressure . " мм рт. ст."; } else { echo "<br><img data-src=\"" . $day->image_v3 . "\" alt=\"\" />"; echo "<br>" . $day->temperature_from; echo "<br>" . $day->temperature_to; } } Спасибо большое, работает) Изменено 16 мая 2020 пользователем radrigo Цитата Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Присоединяйтесь к обсуждению
Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.