Простое решение в поиске нужного числа из интервала

178
27 февраля 2018, 06:25

Добрый день, подскажите плиз , максимально простое решение для поиска числа в интервале по задаче есть таблица в БД

сумма от   сумма до   процент
 1            200       1,5
 201          400        2
 401          1000       3

у меня будет приходить любое число к примеру 300 и мне нужно под это число подставлять процент соответственно из моей таблицы это будет 2% как можно обойти цыклы или сложные решения ? эту таблицу можно группировать в массив

Answer 1
select MinAmount, MaxAmount, Percent from tbl where @amount between MinAmount and MaxAmount
Answer 2

Набросал вот такое решение может его можно упростить?

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;
}
READ ALSO
Структура каталога в адресной строке

Структура каталога в адресной строке

При создании каталожной структуры на сайте, в некоторых сайтах он дублируется через адресную строкуНапример сайт auto ru

218
Php websockets swoole vs ratchet производительность

Php websockets swoole vs ratchet производительность

Не смог найти сравнения по производительности Php websockets swoole vs ratchet , может есть у кого личные наблюдения?

196
Как выбрать данные из таблицы по похожим данным их массива?

Как выбрать данные из таблицы по похожим данным их массива?

Есть массив (массив приходит от пользователя и каждый раз содержит разные значения и их количество, но допустим, что от пользователя пришел...

175
Ошибка с cout, E0439 и C2679

Ошибка с cout, E0439 и C2679

Только начинаю изучать и не понимаю, что не так с coutОписание ошибок на сайте MS не дали новой информации

263