Узнайте ближайший большой кратный (п) PHP - PullRequest
5 голосов
/ 23 июня 2011

У меня есть требование, когда пользователи вынуждены выбирать кратное (n) количество товара.

Значение (n) устанавливается для каждого продукта, которое может быть любым числом.

клиент может приобрести только количество продукта, кратное (n) количеству, установленному для продукта.

Предположим, если (n) равно 5, а пользователь ввел количество как 4 и говорит Добавить в корзину. Я должен добавить количество этого продукта как 5 автоматически.

и если пользователь ввел 6 в качестве количества, то мне нужно добавить 10 количество этого продукта.

Как мне поступить?

Я не понимаю, какую логику следует применять здесь.

Ответы [ 5 ]

10 голосов
/ 23 июня 2011
$entered_quantity = 6;
$suppose_n = 5;

$quantity = ceil($entered_quantity / $suppose_n) * $suppose_n;

echo $quantity;

отпечатки 10

3 голосов
/ 23 июня 2011

это не специфично для php; что ты хочешь сделать, так это вычислить.

потолок (q / n) * n

где q - количество пользователей, n - кратность

2 голосов
/ 23 июня 2011

Вы можете попытаться получить остаток числа при делении на заданное n

например:.

$n = 5;
$amount = 6; // This would be the input, so replace the 6 with a $_POST/$_GET/etc.
$batches = floor($amount / $n);
$rest = $amount % $n;
if ($rest > 0) {
    $batches += 1;
    // You could give the user feedback here that they didn't put in a full multiple of $n
}
// $batches now contains the right amount of batches, so to get the total:
$total = $batches * $n;

Конечно, это может быть сжато, но это может дать лучший обзор того, что происходит:).

1 голос
/ 23 июня 2011

Попробуйте следующую функцию.

function getNextMultipleOfFive($n) {
    $tmp=explode('.',($n/5));
    if($tmp[1]) {
        return ($tmp[0]+1)*5;
    }
    return $tmp[0]*5;
}
0 голосов
/ 23 июня 2011

С циклом do ... while:

$q = 6; // quantity by user input
$n = 5; // per purchace amount

$i = 0;
if ($q > 0)
{
    do
    {
        $i += $n;
    }
    while ($i <= $q);
}
echo $i; // 10

Примечание: не очень эффективно, если $q >> $n

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...