Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #91 (permalink)  
Старый 07.01.2021, 14:44
Аспирант
Отправить личное сообщение для ALFRED450 Посмотреть профиль Найти все сообщения от ALFRED450
 
Регистрация: 07.12.2020
Сообщений: 72

Сообщение от laimas Посмотреть сообщение
Вы когда в конце концов начнете читать справочник языка? Разве сложно заглянуть сюда, чтобы понять где у вас ошибки или отсебятины?

Это как в этой теме, типов то много, а значит вполне можно и в одну строку:

list(...) = exp(...) ? array(...) : array(...);

А чтобы понимать это, нужно изучать язык. Но стоит повторить, что в данном случае так поступать, это просто расточительство.
обращался за помощью на php.ru по своему вопросу, какие только варианты не предлагали в разных ветках форума, но никто предложенное вами list(...) = .... даже не решился рассмотреть, полагаю уровень программирования у всех разный, мне с 0 такое не осилить. Мало того чтобы читать мануал, его надо еще уметь применить. Читал и про list, exp, array так и не понял как это воедино применить. уж если запутался с онлайн и офлайн в примерах ранее, то с вычеслением углов для каждого направления вообще мрак. Напишите плз как правильно.

к слову, так и не вышло с направлением по предложенным вариантам на другом форуме, если у читающих мануал и умеющих не выходит ...

Последний раз редактировалось ALFRED450, 07.01.2021 в 14:54.
Ответить с цитированием
  #92 (permalink)  
Старый 07.01.2021, 19:51
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

С константой нет проблем, надеюсь не сложно было разобраться?

Вот только вопрос - а зачем она там вообще нужна, константа? Такой же вопрос и по поводу:

if(...) {
    $a = ...
    $b = ...
} else {
    $a = ...
....


зачем простое условие, выполняющее с легкостью задачу, при этом читабельность кода 100%, усложнять конструкцией, от которой в данном случае нет ни какой пользы, просто будут выполнятся еще, лишние, операции? Ради "красивости кода в одну строку"? Если по такому принципу писать код, тогда все пропало.

Ну а ради понимания, то ничего сложного. Записать "как есть" это условие тернарным оператором не позволяет синтаксис. Но оператор может возвращать и массив, а значит можно определить в нем значения для переменных $a, $b, ... массивом. Проверить это ведь не сложно, выполнив простое:

$a = true ? ['a', 'b'] : ['c', 'd'];
var_dump($a);
// array(2) { [0]=> string(1) "a" [1]=> string(1) "b" }


А к возвращаемому массиву применить list(), тогда:

list($a, $b) = false ? ['a', 'b'] : ['c', 'd'];
echo $a . ' / ' . $b;
// c / d


Есть в этом что-то очень сложное для понимания? Читайте, выполняйте примеры, вникайте, и понимание будет обязательно.

Последний раз редактировалось laimas, 07.01.2021 в 20:20.
Ответить с цитированием
  #93 (permalink)  
Старый 07.01.2021, 23:16
Аспирант
Отправить личное сообщение для ALFRED450 Посмотреть профиль Найти все сообщения от ALFRED450
 
Регистрация: 07.12.2020
Сообщений: 72

Сообщение от laimas Посмотреть сообщение
С константой нет проблем, надеюсь не сложно было разобраться?
Сделал так, стало выводить, но сравнил погоду другими сервисами направления у меня и там не совпадают, скажите где напутал или более правильный код

function getCardinalDirection($deg) {
    $array = array('↑ С', '? СЗ', '→ В', '? ЮВ', '↓ Ю', '? ЮЗ', '← З', '↖СЗ');
    return $array[round(($deg / 45) % 8)];
}
 
$a = getCardinalDirection($deg);
 
$deg2 = $deg + 180;
if($deg >= 180) $deg2 = $deg - 180;
 
$b = getCardinalDirection($deg2);

у меня северный, на погодном сервисе южный

Последний раз редактировалось ALFRED450, 07.01.2021 в 23:19.
Ответить с цитированием
  #94 (permalink)  
Старый 07.01.2021, 23:25
Аспирант
Отправить личное сообщение для ALFRED450 Посмотреть профиль Найти все сообщения от ALFRED450
 
Регистрация: 07.12.2020
Сообщений: 72

все разобрался, после
$a = getCardinalDirection($deg);

лишнее, тогда работает верно
Ответить с цитированием
  #95 (permalink)  
Старый 08.01.2021, 20:11
Аспирант
Отправить личное сообщение для ALFRED450 Посмотреть профиль Найти все сообщения от ALFRED450
 
Регистрация: 07.12.2020
Сообщений: 72

Подскажите еще один момент, как и ранее писал получаю направление
в коде все верно и работает
function getCardinalDirection($deg) {
    $array = array('С', 'СВ', 'В', 'ЮВ', 'Ю', 'ЮЗ', 'З', 'СЗ');
    return $array[round(($deg / 45) % 8)];
}
 
$a = getCardinalDirection($deg);
 
echo '<head>
  <style>
   .img-arrow {
    transform: rotate('.$deg.'deg);
   }
  </style>
</head>';
// прочее
echo '<img src="icons/arrow.png" alt="" class="img-arrow">';

полученное изображение тоже крутится. Но как вы говорили такой способ для получения изображения не совсем верный для php, я как и ранее использовал вашу подсказку , но как ее вращать из полученных данных не понятно
$img = file_get_contents('icons/arrow.png');
$img2 = new Imagick();
$img2->readImageBlob($img);
Ответить с цитированием
  #96 (permalink)  
Старый 09.01.2021, 03:30
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от ALFRED450
вы говорили такой способ для получения изображения не совсем верный для php
Поднять тему где это было сказано и по какому поводу. Разве об этом шла речь?
Ответить с цитированием
  #97 (permalink)  
Старый 10.01.2021, 19:56
Аспирант
Отправить личное сообщение для ALFRED450 Посмотреть профиль Найти все сообщения от ALFRED450
 
Регистрация: 07.12.2020
Сообщений: 72

Подскажите как использовать одну функцию для двух показаний. Ругается на повтор.
function getCardinalDirection($deg) {
    $array = array('С', 'СВ', 'В', 'ЮВ', 'Ю', 'ЮЗ', 'З', 'СЗ');
    return $array[round(($deg / 45) % 8)];
}
 
$a = getCardinalDirection($deg);

function getCardinalDirection($deg) {
    
    $array = array('strelka/N.png', 'strelka/NE.png', 'strelka/E.png', 'strelka/SE.png', 'strelka/S.png', 'strelka/SW.png', 'strelka/W.png', 'strelka/NW.png');
    return $array[round(($deg / 45) % 8)];
}
 
$ab = getCardinalDirection($deg);

$img = file_get_contents($ab);
$icon_deg = new Imagick();
$icon_deg->readImageBlob($img);

Последний раз редактировалось ALFRED450, 10.01.2021 в 23:12.
Ответить с цитированием
  #98 (permalink)  
Старый 11.01.2021, 08:14
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от ALFRED450
как использовать одну функцию для двух показаний
Имя каждой функции должно быть уникально, а вы что порете? По большому счету эти функции как сбоку припеку.

Это $img = file_get_contents($ab) было необходимо, когда изображение было удаленным. Зачем же заниматься этим с локальными файлами?
Ответить с цитированием
  #99 (permalink)  
Старый 11.01.2021, 09:53
Аспирант
Отправить личное сообщение для ALFRED450 Посмотреть профиль Найти все сообщения от ALFRED450
 
Регистрация: 07.12.2020
Сообщений: 72

Цитата:
Имя каждой функции должно быть уникально, а вы что порете? По большому счету эти функции как сбоку припеку.
другого способа просто не знаю и признаться не умею, покажите как правильно будет. Так мне тоже подсказали и брал примеры деления градусов с интернета.


Цитата:
Это $img = file_get_contents($ab) было необходимо, когда изображение было удаленным. Зачем же заниматься этим с локальными файлами?
ну ранее как вы показали так и делаю, а как иначе?
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Карта погоды Яндекс на сайт 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