Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 14.12.2020, 22:53
Аспирант
Отправить личное сообщение для ALFRED450 Посмотреть профиль Найти все сообщения от ALFRED450
 
Регистрация: 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.
Ответить с цитированием
  #2 (permalink)  
Старый 15.12.2020, 00:12
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от ALFRED450
сделать вывод погоды в целых числах
Либо отбрасывать дробную часть, либо округлять в большую/меньшую сторону.

Сообщение от ALFRED450
иконка ->далее температура
Ну так выводите первой ее.

Сообщение от ALFRED450
месяц прописью
https://www.php.net/manual/ru/function.setlocale.php - пример 2. Либо берите его из $monthes по номеру месяца, для чего вы создавали этот массив?
Ответить с цитированием
  #3 (permalink)  
Старый 15.12.2020, 00:52
Аспирант
Отправить личное сообщение для ALFRED450 Посмотреть профиль Найти все сообщения от ALFRED450
 
Регистрация: 07.12.2020
Сообщений: 72

Цитата:
Либо отбрасывать дробную часть, либо округлять в большую/меньшую сторону.
я понимаю, но реализовать не могу, смотрел доки по api на сайте, но так примера не нашел


Цитата:
Ну так выводите первой ее.
вывожу, но что то ломается и летят ошибки, где то я теряю какой то символ


Цитата:
https://www.php.net/manual/ru/function.setlocale.php - пример 2. Либо берите его из $monthes по номеру месяца, для чего вы создавали этот массив?
массив создан как раз для этих целей, но как и выше знаний не хватает
Ответить с цитированием
  #4 (permalink)  
Старый 15.12.2020, 00:59
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 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.
Ответить с цитированием
  #5 (permalink)  
Старый 15.12.2020, 02:04
Аспирант
Отправить личное сообщение для ALFRED450 Посмотреть профиль Найти все сообщения от ALFRED450
 
Регистрация: 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.
Ответить с цитированием
  #6 (permalink)  
Старый 15.12.2020, 02:33
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от ALFRED450
странно повел ceil округлив 8,9 до 8
А вы уверены, что $show_weather это число? Ну-ка внимательно на свой код ...
Ответить с цитированием
  #7 (permalink)  
Старый 15.12.2020, 02:56
Аспирант
Отправить личное сообщение для ALFRED450 Посмотреть профиль Найти все сообщения от ALFRED450
 
Регистрация: 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.
Ответить с цитированием
  #8 (permalink)  
Старый 15.12.2020, 05:57
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от ALFRED450
уверен что да
А это что?

$show_weather=$weather->main->temp."°C";
Ответить с цитированием
  #9 (permalink)  
Старый 15.12.2020, 08:41
Аспирант
Отправить личное сообщение для ALFRED450 Посмотреть профиль Найти все сообщения от ALFRED450
 
Регистрация: 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.
Ответить с цитированием
  #10 (permalink)  
Старый 15.12.2020, 08:46
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 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'
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Карта погоды Яндекс на сайт spinastr Общие вопросы Javascript 4 25.04.2018 20:05
Как вывести свои иконки погоды? spinastr Общие вопросы Javascript 18 01.03.2018 14:07
Bспользование стороннего API погоды ojv08612 Node.JS 1 28.02.2017 18:00
Разработка с помощью Jquery. Скрипт смены иконки погоды 2K2L Мобильный JavaScript 1 06.04.2015 18:02
Скрипт для погоды. Типа плеера. Ruskat Общие вопросы Javascript 1 28.07.2011 02:44