Вопрос. Сравнение и сопоставление значений.

Использование системы в различных ситуациях, вопросы программирования сценариев.

Модератор: immortal

Jager
Сообщения: 708
Зарегистрирован: Сб авг 18, 2012 10:21 am
Благодарил (а): 26 раз
Поблагодарили: 183 раза

Вопрос. Сравнение и сопоставление значений.

Сообщение Jager » Чт мар 02, 2017 3:01 pm

Есть условная таблица данных, в которой есть две группы значений, А и Б.
Суть вопроса, при записи в свойства объекта значения из группы А другому свойству должно присваиваться соответствующее значение Б.
Сам я коряво этот вопрос решил вот так

Код: Выделить всё

if ($this->getProperty('value') == 100){
 $this->setProperty('value2', 25.5);
}
if ($this->getProperty('value') == 102){
 $this->setProperty('value2', 26.7);
 } 
и т.д. всего значений порядка 70
Но что то мне подсказывает что есть более изящное решение :)
Подскажите как сделать красиво и правильно.
Последний раз редактировалось Jager Чт мар 02, 2017 3:53 pm, всего редактировалось 1 раз.
Ged
Сообщения: 105
Зарегистрирован: Чт окт 20, 2016 10:59 pm
Благодарил (а): 1 раз
Поблагодарили: 7 раз

Re: Вопрос. Сравнение и сопоставление значений.

Сообщение Ged » Чт мар 02, 2017 3:41 pm

На вскиду, наверное, красивее использовать switch -http://php.net/switch()
Хотя он в PHP какой-то странный...

А если красиво... То, как-нибудь так.
$table[param1]=value1;
$table[param2]=value2;
...
$this->setProperty('alcoBoil', $table[$this->getProperty('value')]));
Аватара пользователя
Bagir
Сообщения: 1614
Зарегистрирован: Вт сен 17, 2013 6:46 pm
Откуда: Ярославская область город Углич
Благодарил (а): 212 раз
Поблагодарили: 375 раз

Re: Вопрос. Сравнение и сопоставление значений.

Сообщение Bagir » Чт мар 02, 2017 7:13 pm

А никакой зависимости value2 от value нет? Может как формулой подогнать можно. 70 значений даже для массива будет выглядеть не здорово.
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
Jager
Сообщения: 708
Зарегистрирован: Сб авг 18, 2012 10:21 am
Благодарил (а): 26 раз
Поблагодарили: 183 раза

Re: Вопрос. Сравнение и сопоставление значений.

Сообщение Jager » Чт мар 02, 2017 7:57 pm

Bagir писал(а):А никакой зависимости value2 от value нет? Может как формулой подогнать можно. 70 значений даже для массива будет выглядеть не здорово.
Зависимость есть, каждое увеличение value на единицу увеличивает значение value2 на 0,038.
Примерно в таком виде 1-0,038 2-0,076 3-0,114 и т.д.
Chainik
Сообщения: 1463
Зарегистрирован: Вс янв 10, 2016 11:05 am
Благодарил (а): 261 раз
Поблагодарили: 454 раза

Re: Вопрос. Сравнение и сопоставление значений.

Сообщение Chainik » Чт мар 02, 2017 8:38 pm

Jager писал(а):Зависимость есть, каждое увеличение value на единицу увеличивает значение value2 на 0,038.
Примерно в таком виде 1-0,038 2-0,076 3-0,114 и т.д.

Код: Выделить всё

$this->setProperty('value2', $this->getProperty('value')*0,038); 
А так будет работать (без всяких "If")?
Jager
Сообщения: 708
Зарегистрирован: Сб авг 18, 2012 10:21 am
Благодарил (а): 26 раз
Поблагодарили: 183 раза

Re: Вопрос. Сравнение и сопоставление значений.

Сообщение Jager » Чт мар 02, 2017 9:13 pm

Chainik писал(а):

Код: Выделить всё

$this->setProperty('value2', $this->getProperty('value')*0,038); 
А так будет работать (без всяких "If")?
Нет не будет. Значения А и Б не связаны напрямую, есть только зависимость о которой я писал выше.
Chainik
Сообщения: 1463
Зарегистрирован: Вс янв 10, 2016 11:05 am
Благодарил (а): 261 раз
Поблагодарили: 454 раза

Re: Вопрос. Сравнение и сопоставление значений.

Сообщение Chainik » Чт мар 02, 2017 9:26 pm

Jager писал(а):Значения А и Б не связаны напрямую, есть только зависимость о которой я писал выше.
Т.е. зависимостью "Б=А*0,038+константа" описать взаимосвязь value и value2 нельзя?
Аватара пользователя
xor
Сообщения: 2043
Зарегистрирован: Сб ноя 22, 2014 8:45 pm
Благодарил (а): 288 раз
Поблагодарили: 629 раз

Re: Вопрос. Сравнение и сопоставление значений.

Сообщение xor » Чт мар 02, 2017 9:29 pm

А так не пойдет?

Код: Выделить всё

old_value=value
//(тут что-то происходит с value)

delta=value-old_value
value2=value2+delta*0.038
old_value=value
Jager
Сообщения: 708
Зарегистрирован: Сб авг 18, 2012 10:21 am
Благодарил (а): 26 раз
Поблагодарили: 183 раза

Re: Вопрос. Сравнение и сопоставление значений.

Сообщение Jager » Чт мар 02, 2017 9:47 pm

Chainik писал(а):Т.е. зависимостью "Б=А*0,038+константа" описать взаимосвязь value и value2 нельзя?
Вот реальные цифры
Изображение
Jager
Сообщения: 708
Зарегистрирован: Сб авг 18, 2012 10:21 am
Благодарил (а): 26 раз
Поблагодарили: 183 раза

Re: Вопрос. Сравнение и сопоставление значений.

Сообщение Jager » Чт мар 02, 2017 9:51 pm

xor писал(а):А так не пойдет?

Код: Выделить всё

old_value=value
//(тут что-то происходит с value)

delta=value-old_value
value2=value2+delta*0.038
old_value=value
Не сработает.
Для наглядности кусок таблички выложил выше.
Ответить