Добрый день, подскажите плиз , максимально простое решение для поиска числа в интервале по задаче есть таблица в БД
сумма от сумма до процент
1 200 1,5
201 400 2
401 1000 3
у меня будет приходить любое число к примеру 300 и мне нужно под это число подставлять процент соответственно из моей таблицы это будет 2% как можно обойти цыклы или сложные решения ? эту таблицу можно группировать в массив
select MinAmount, MaxAmount, Percent from tbl where @amount between MinAmount and MaxAmount
Набросал вот такое решение может его можно упростить?
public static function getPercent($product_id, $amount = null)
{
if($amount === null){
$amount = Yii::$app->user->identity->power;
}
if (!$value = Yii::$app->cache->get('product_discounts_percent')){
$value = array();
$arr = static::find()->asArray()->all();
foreach ($arr as $v){
$value[$v['product_id']][]= [
'interval_from'=> (int)$v['interval_from'],
'interval_to' => (int)$v['interval_to'],
'percent' => (float)$v['percent']
];
}
Yii::$app->cache->set('product_discounts_percent', $value, self::CACHE_TIME );
}
if(!isset($value[$product_id])){
return self::MINIMUM_AMOUNT_ACCRUAL;
}
foreach ($value[$product_id] as $data){
if($amount >= $data['interval_from'] && $amount <= $data['interval_to'] ){
return $data['percent'];
}
}
return self::MINIMUM_AMOUNT_ACCRUAL;
}
Сборка персонального компьютера от Artline: умный выбор для современных пользователей