2017-02-09 5 views
0

Есть данные от пользователя, которые мне нужны для проверки членства в определенном диапазоне, и в зависимости от этого результата получается другой результат. Я использую этот метод:Как оптимизировать множество «else if»?

if($var < 1000) { 
    do one 
} 
else if ($var < 2000) { 
    do two 
} 
else if ($var < 3000) { 
    do three 
} 
.... 

Но это выглядит непрофессионально. Как я могу оптимизировать этот код?/without 'switch' - это почти то же самое/

+0

* Но это выглядит непрофессионально * - почему вы так думаете? – RomanPerekhrest

+0

вы можете использовать тернарный оператор. в зависимости от количества утверждений, которые у вас есть, это может стать нечитаемым. вот [сообщение в блоге] (https://davidwalsh.name/php-shorthand-if-else-ternary-operators) –

+0

Что вы обедаете внутри, если блок? – C2486

ответ

1

Думаю, это зависит от логики внутри блока if-else. Если это просто возвращение, или вызова метода, например, вы можете сделать следующее:

if ($var < 1000) return 1; 
if ($var < 2000) return 2; 
if ($var < 3000) return 3; 

Если логика внутри каждое состояния более чем одна операции, вы можете переместить его функцию и простой звонок уместных функция.

Чтобы быть честным, у вас все хорошо. Пока он чист и читабельен. Вы должны только начинать беспокоиться о чистоте, когда они становятся более вложенными.

2

Выглядит хорошо для меня:

  1. Это читаемым.

  2. Это вряд ли будет узким местом для производительности.

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

Не использовать цепочку трехкомпонентных условных операторов, так как, по какой-то причине, PHP фольклорный решил возиться с ассоциативности этого оператора ср C, C++ и Java.

Смежные вопросы