Страница 1 из 2

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

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

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

if ($this->getProperty('value') == 100){
 $this->setProperty('value2', 25.5);
}
if ($this->getProperty('value') == 102){
 $this->setProperty('value2', 26.7);
 } 
и т.д. всего значений порядка 70
Но что то мне подсказывает что есть более изящное решение :)
Подскажите как сделать красиво и правильно.

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

Добавлено: Чт мар 02, 2017 3:41 pm
Ged
На вскиду, наверное, красивее использовать switch -http://php.net/switch()
Хотя он в PHP какой-то странный...

А если красиво... То, как-нибудь так.
$table[param1]=value1;
$table[param2]=value2;
...
$this->setProperty('alcoBoil', $table[$this->getProperty('value')]));

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

Добавлено: Чт мар 02, 2017 7:13 pm
Bagir
А никакой зависимости value2 от value нет? Может как формулой подогнать можно. 70 значений даже для массива будет выглядеть не здорово.

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

Добавлено: Чт мар 02, 2017 7:57 pm
Jager
Bagir писал(а):А никакой зависимости value2 от value нет? Может как формулой подогнать можно. 70 значений даже для массива будет выглядеть не здорово.
Зависимость есть, каждое увеличение value на единицу увеличивает значение value2 на 0,038.
Примерно в таком виде 1-0,038 2-0,076 3-0,114 и т.д.

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

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

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

$this->setProperty('value2', $this->getProperty('value')*0,038); 
А так будет работать (без всяких "If")?

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

Добавлено: Чт мар 02, 2017 9:13 pm
Jager
Chainik писал(а):

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

$this->setProperty('value2', $this->getProperty('value')*0,038); 
А так будет работать (без всяких "If")?
Нет не будет. Значения А и Б не связаны напрямую, есть только зависимость о которой я писал выше.

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

Добавлено: Чт мар 02, 2017 9:26 pm
Chainik
Jager писал(а):Значения А и Б не связаны напрямую, есть только зависимость о которой я писал выше.
Т.е. зависимостью "Б=А*0,038+константа" описать взаимосвязь value и value2 нельзя?

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

Добавлено: Чт мар 02, 2017 9:29 pm
xor
А так не пойдет?

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

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

delta=value-old_value
value2=value2+delta*0.038
old_value=value

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

Добавлено: Чт мар 02, 2017 9:47 pm
Jager
Chainik писал(а):Т.е. зависимостью "Б=А*0,038+константа" описать взаимосвязь value и value2 нельзя?
Вот реальные цифры
Изображение

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

Добавлено: Чт мар 02, 2017 9:51 pm
Jager
xor писал(а):А так не пойдет?

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

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

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