Javascript-форум (https://javascript.ru/forum/)
-   Ваши сайты и скрипты (https://javascript.ru/forum/project/)
-   -   Прогноз погоды (https://javascript.ru/forum/project/81557-prognoz-pogody.html)

ALFRED450 18.12.2020 13:27

Цитата:

Сообщение от laimas (Сообщение 531870)
Вам надо выводить в верхнем регистре все? Выводе на здоровье, никто не запрещает.
Полнейшая чушь это ('$cityname') и "лечение" этого как mb_strtoupper(...). И если первое вам нужно, то зачем вы эту дурь к температуре клеите?

Ни кто с вами и не собирается вести военные действия, просто вам нужно начинать учить язык с его основ, а не хвататься сразу за то, в чем вы разобраться не можете. Это JS, но суть та же, выполните:

var $cityname = 'Город';
alert($cityname + '\n' + '$cityname')

Вопрос - почему во второй строке не выводит Город?

так не верно:
$cityname = 'Город';
echo 
$cityname;

laimas 18.12.2020 13:42

Цитата:

Сообщение от ALFRED450
так не верно:

Что именно не верно?

А вот так в обеих случаях будет вывод не строки $cityname, а значения переменной $cityname.

var $cityname = 'Город';
alert($cityname + '\n' + `${$cityname}`)


Такая возможность появилась в JS не так давно, и при этом строка заключена в обратные косые кавычки. В РНР вывод значений переменных (выполнение кода) в строке доступно давно, но возможно только тогда когда строка заключена не в одинарные, а в двойные кавычки. Именно поэтому простые строки в РНР лучше заключать в одинарные, а не двойные кавычки, чтобы избавить парсер от бесполезного разбора строки. Читайте об этом в разделе руководства по ссылке.

Но в данном случае поступать так "$cityname" вместо $cityname при передачи строки в функцию, это такая же глупость, как и rtrim(...) ради вывода. Если вы такие грабли в коде пишите, значит что-то вы упустили. Чудес не бывает, они легко объясняются незнанием, непониманием, невниманием или элементарными ошибками. Мы люди и нам свойственно ошибаться, поэтому нужно внимательно изучить то, что вы написали, проверить что и как вы отдаете в функцию и т.п., и тогда вы обнаружите свой же баг. Именно свой, ибо причиной "такой странности" являетесь вы, а никак не язык РНР или его расширения.

Скачивайте руководство РНР, оно в CHM формате на многих языках, скачивайте то что с примерами, и изучайте с самого начала, только так будут познания и опыт, через попу не получится.

ALFRED450 18.12.2020 13:47

Цитата:

Сообщение от laimas (Сообщение 531875)
Что именно не верно?

А вот так в обеих случаях будет вывод не строки $cityname, а значения переменной $cityname.

var $cityname = 'Город';
alert($cityname + '\n' + `${$cityname}`)


Такая возможность появилась в JS не так давно, и при этом строка заключена в обратные косые кавычки. В РНР вывод значений переменных (выполнение кода) в строке доступно давно, но возможно только тогда когда строка заключена не в одинарные, а в двойные кавычки. Именно поэтому простые строки в РНР лучше заключать в одинарные, а не двойные кавычки, чтобы избавить парсер от бесполезного разбора строки. Читайте об этом в разделе руководства по ссылке.

Но в данном случае поступать так "$cityname" вместо $cityname при передачи строки в функцию, это такая же глупость, как и rtrim(...) ради вывода. Если вы такие грабли в коде пишите, значит что-то вы упустили. Чудес не бывает, они легко объясняются незнанием, непониманием, невниманием или элементарными ошибками. Мы люди и нам свойственно ошибаться, поэтому нужно внимательно изучить то, что вы написали, проверить что и как вы отдаете в функцию и т.п., и тогда вы обнаружите свой же баг. Именно свой, ибо причиной "такой странности" являетесь вы, а никак не язык РНР или его расширения.

Скачивайте руководство РНР, оно в CHM формате на многих языках, скачивайте то что с примерами, и изучайте с самого начала, только так будут познания и опыт, через попу не получится.

))) 7 страниц пытки чтоб ......$city_text_pixel_y, 0, "$cityname");
взять просто в двойные кавычки. Спасибо большое - это не сарказм.
Даже "аспирантом" стал ))) взял в двойные, чтобы избавить себя от этого звания

laimas 18.12.2020 13:54

Цитата:

Сообщение от ALFRED450
взять просто в двойные кавычки

Опять 25 - не нужно вообще никаких кавычек!

Есть функция, которая ожидает строку, пусть так fun(string). Если вы пишите в коде явно с передачей строки "Текст", то и должны писать fun("Текст") вызывая функцию. Но если эта строка ранее определена в переменной $var, то вызов будет fun($var), обрамлять при этом имя переменной кавычками не надо, это дурь не иначе.

ALFRED450 18.12.2020 14:10

Цитата:

Сообщение от laimas (Сообщение 531877)
Опять 25 - не нужно вообще никаких кавычек!

Есть функция, которая ожидает строку, пусть так fun(string). Если вы пишите в коде явно с передачей строки "Текст", то и должны писать fun("Текст") вызывая функцию. Но если эта строка ранее определена в переменной $var, то вызов будет fun($var), обрамлять при этом имя переменной кавычками не надо, это дурь не иначе.

окончательно запутался, как китайская грамота

if($cityname){ //город
	$draw->setFont(BASEPATH."/font/".$font_city);
	$draw->setTextAlignment(Imagick::ALIGN_LEFT);
    $draw->setFontSize($city_font_size);
    $draw->setFillColor("rgb(".$city_font_color.")");
    $bg->annotateImage($draw, $city_text_pixel_x, $city_text_pixel_y, 0, "$cityname");

что куда писать?

laimas 18.12.2020 14:19

$bg->annotateImage($draw, $city_text_pixel_x, $city_text_pixel_y, 0, $cityname);


На черта вы упорно переменную обрамляете в кавычки? И это когда рядом $city_text_pixel_y без этой чуши и нормально указывается.

ALFRED450 18.12.2020 14:28

Цитата:

Сообщение от laimas (Сообщение 531879)
$bg->annotateImage($draw, $city_text_pixel_x, $city_text_pixel_y, 0, $cityname);


На черта вы упорно переменную обрамляете в кавычки? И это когда рядом $city_text_pixel_y без этой чуши и нормально указывается.

Верно, блин, ну пробовал я вроде так и не получалось.Убрал, работает.
Я выше просил, а как сделать чтобы
if($cityname){ //город
отключался как сделано со временем, днем и неделей
$view_today = false; // День недели
$view_date = true; // Число
$view_clock = true; // Часы
$cityname = false // не отключает

laimas 18.12.2020 14:38

Цитата:

Сообщение от ALFRED450
$cityname = false // не отключает

Понятия не имею, разбирайтесь, выведите в браузер значение переменной, в общем анализируйте.

ALFRED450 18.12.2020 16:32

Цитата:

Сообщение от laimas (Сообщение 531884)
Понятия не имею, разбирайтесь, выведите в браузер значение переменной, в общем анализируйте.

разобрался, посмотрел внимательно на примеры в коде и понял, что переменные которые в названии и те что выполняются должны иметь разное название

if($view_cityname){ //город
$draw->setFont(BASEPATH."/font/".$font_city);
$draw->setTextAlignment(Imagick::ALIGN_LEFT);
$draw->setFontSize($city_font_size);
$draw->setFillColor("rgb(".$city_font_color.")");
$bg->annotateImage($draw, $city_text_pixel_x, $city_text_pixel_y, 0, $cityname);

тогда:
$view_cityname = false; //отключается

ALFRED450 20.12.2020 18:58

не могли бы вы подсказать почему получая содержимое из текстового файла не получается вывести как примерами выше, то есть соединить с графикой?
$handle = fopen("statistika/online.txt", "r");
while (!feof($handle)) {
    $buffer = fgets($handle, 50);
    echo $buffer;
}
fclose($handle);

->
if($vs){ //статистика
	$draw->setFont(BASEPATH."/font/".$font_server);
	$draw->setTextAlignment(Imagick::ALIGN_LEFT);
    $draw->setFontSize($server_font_size);
    $draw->setFillColor("rgb(".$server_font_color.")");
    $bg->annotateImage($draw, $server_text_pixel_x, $server_text_pixel_y, 0, $buffer);
}


Часовой пояс GMT +3, время: 12:57.