14.12.2020, 22:53
|
Аспирант
|
|
Регистрация: 07.12.2020
Сообщений: 72
|
|
Прогноз погоды
$monthes = array(
1 => 'Января', 2 => 'Февраля', 3 => 'Марта', 4 => 'Апреля',
5 => 'Мая', 6 => 'Июня', 7 => 'Июля', 8 => 'Августа',
9 => 'Сентября', 10 => 'Октября', 11 => 'Ноября', 12 => 'Декабря'
);
$url = "https://api.openweathermap.org/data/2.5/weather?id=498817&units=metric&appid=42633145136a94711f8d879deade6bf1&lang=ru";
$contents = file_get_contents($url);
$weather=json_decode($contents);
*!*
$show_weather=$weather->main->temp."°C";
*/!*
$icon=$weather->weather[0]->icon.".png";
$today = date("j.m.Y");
$cityname = $weather->name;
$wind=$weather->wind->speed."м/с";
$humidity=$weather->main->humidity."%";
echo $today."<br />".
$cityname."<br />".
"Влажность: ".$humidity."<br />".
"Ветер: ".$wind."<br />".
*!*
$show_weather."<br />
<img src='http://openweathermap.org/img/wn/".$icon."' />";
*/!*
Прошу помочь сделать вывод погоды в целых числах.
И сломал голову как правильно выстроить: иконка ->далее температура (22 и 23 строка)
И если не затруднит месяц прописью как правильно реализовать
Последний раз редактировалось ALFRED450, 14.12.2020 в 23:14.
|
|
15.12.2020, 00:12
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Сообщение от ALFRED450
|
сделать вывод погоды в целых числах
|
Либо отбрасывать дробную часть, либо округлять в большую/меньшую сторону.
Сообщение от ALFRED450
|
иконка ->далее температура
|
Ну так выводите первой ее.
Сообщение от ALFRED450
|
месяц прописью
|
https://www.php.net/manual/ru/function.setlocale.php - пример 2. Либо берите его из $monthes по номеру месяца, для чего вы создавали этот массив?
|
|
15.12.2020, 00:52
|
Аспирант
|
|
Регистрация: 07.12.2020
Сообщений: 72
|
|
Цитата:
|
Либо отбрасывать дробную часть, либо округлять в большую/меньшую сторону.
|
я понимаю, но реализовать не могу, смотрел доки по api на сайте, но так примера не нашел
Цитата:
|
Ну так выводите первой ее.
|
вывожу, но что то ломается и летят ошибки, где то я теряю какой то символ
массив создан как раз для этих целей, но как и выше знаний не хватает
|
|
15.12.2020, 00:59
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Какое API, одну из функций PHP https://www.php.net/manual/ru/ref.math.php , какую, это не мне решать.
Сообщение от ALFRED450
|
массив создан как раз для этих целей, но как и выше знаний не хватает
|
Так если не читать о функциях, то откуда они появятся. Функция date('n') возвращает номер месяца без ведущего нуля. Как по его номеру из массива получить название месяца или вы и этого не знаете?
Последний раз редактировалось laimas, 15.12.2020 в 01:47.
|
|
15.12.2020, 02:04
|
Аспирант
|
|
Регистрация: 07.12.2020
Сообщений: 72
|
|
Первую задачу вроде выполнил до целого числа
$show_weather=$weather->main->temp."°C";
$icon=$weather->weather[0]->icon.".png";
$today = date("j.m.Y");
$cityname = $weather->name;
$url = 'http://openweathermap.org/img/wn/';
$wind=$weather->wind->speed."м/с";
$humidity=$weather->main->humidity."%";
*!*
$w_weather = ceil($show_weather);
*/!*
но как то странно повел ceil округлив 8,9 до 8
echo $today."<br />".
$cityname."<br />".
"Влажность: ".$humidity."<br />".
"Ветер: ".$wind."<br />".
*!*
$w_weather."<br />
*/!*
<img src='http://openweathermap.org/img/wn/".$icon."' />";
и как то странно потерял °C, теперь просто показывает число
Последний раз редактировалось ALFRED450, 15.12.2020 в 02:24.
|
|
15.12.2020, 02:33
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Сообщение от ALFRED450
|
странно повел ceil округлив 8,9 до 8
|
А вы уверены, что $show_weather это число? Ну-ка внимательно на свой код ...
|
|
15.12.2020, 02:56
|
Аспирант
|
|
Регистрация: 07.12.2020
Сообщений: 72
|
|
Сообщение от laimas
|
А вы уверены, что $show_weather это число? Ну-ка внимательно на свой код ...
|
уверен что да
вот что получаю по запросу
"weather":[{"id":804,"main":"Clouds","description":"пасм рно","icon":"04n"}]
{"temp":-9.04,"feels_like":-14.09,"temp_min":-9.04,"temp_max":-9.04,....}
а $show_weather я же могу назвать как угодно $moya_pogoda
но значек впереди погоды не могу поставить, ломается все
спасибо за https://www.php.net/manual/ru/ref.math.php
Последний раз редактировалось ALFRED450, 15.12.2020 в 03:03.
|
|
15.12.2020, 05:57
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Сообщение от ALFRED450
|
уверен что да
|
А это что?
$show_weather=$weather->main->temp."°C";
|
|
15.12.2020, 08:41
|
Аспирант
|
|
Регистрация: 07.12.2020
Сообщений: 72
|
|
Сообщение от laimas
|
А это что?
$show_weather=$weather->main->temp."°C";
|
сделал так:
$show_weather=$weather->main->temp;
$icon=$weather->weather[0]->icon.".png";
$today = date("j.m.Y, H:i");
$cityname = $weather->name;
$wind=$weather->wind->speed." м/с";
$humidity=$weather->main->humidity."%";
$w_weather = ceil($show_weather);
*!*
$sw_weather = $w_weather. "°C";
*/!*
по temp он получает число, а "°C" просто указываешь что это, хоть кг, я так понимаю, примеры с интернета по крайней мере так показывают.
Последний раз редактировалось ALFRED450, 15.12.2020 в 08:45.
|
|
15.12.2020, 08:46
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
А зачем столько лишнего писать, что используется только раз?
$show_weather=$weather->main->temp;
$sw_weather = $w_weather. "°C";
$w_weather = ceil($show_weather);
и может все-таки round? И сразу при выводе, без создания не понятно для чего промежуточных переменных.
round($weather->main->temp) . '°C'
|
|
|
|