Я пытаюсь упростить некоторый унаследованный код PHP, который присваивает значение одной переменной на основе значения в другой переменной, примерно так:
if x < 50, y = 10
else if x >= 50 and < 100, y = 20
else if x >= 100 and < 350, y = 30
else y = 40
Фактический PHP-код для этого занимает несколько строк и далек от идеала, но в нем достаточно паттерна, который, я думаю, я могу значительно упростить, - но это не совсем простой паттерн.
Моя лучшая идея на данный момент - присвоить массиву возможные значения y, а затем вызвать индекс этого массива на основе предела значения x, например:
$convert = array (10, 20, 30, 30, 30, 30);
$y = ($x <= 350) ? $convert[ceil($x/50)] : 40;
Две линии, намного меньше избыточности и намного больше гибкости. Но я вижу, что ceil
возвращает число с плавающей запятой, поэтому я не уверен, могу ли я доверять ему в создании индекса массива, и я не нашел в Интернете ничего об этом в любом случае. Если он может вернуть какое-то значение 3.000000000001
, могу ли я просто сделать это так:
$y = ($x <= 350) ? $convert[round(ceil($x/50))] : 40;
Или все еще есть потенциальные ловушки и / или лучшее решение?