Как получить значение скидки из массива слябов в php - PullRequest
0 голосов
/ 21 сентября 2019

Я пытаюсь получить номер скидки (значение) с предопределенными плитами в виде массива.

Так, например, если общее количество продуктов составляет от 11 до 20, я хочу вернуть 25 в качестве скидкистоимость.

Это может быть просто, но я не понимаю, как это сделать.Как простой цикл foreach, вероятно, не будет работать.

/**
 * The function returns the discount amount from the slabs
 *
 * @param int $products_count total number of product in cart
 *
 * @return mixed null|int returns discount value if matches else null
 */
public function product_discounts($products_count)
{

    $discount_slabs = [
        '10' => '15',
        '20' => '25',
        '30' => '35',
        '50' => '50',
    ];

    foreach ($discount_slabs as $count => $discount) {

        if ($products_count <= $count) {
            $this->discount = $discount;
        }

    }

    return $this->discount;

}

1 Ответ

1 голос
/ 21 сентября 2019

Вам просто нужно вернуть скидку в цикле, чтобы, когда вы найдете наименьшую плиту, в которую входит количество продуктов, вы перестали проходить через последующие значения.В противном случае все значения вернутся на 50%.Если вы выйдете из цикла, у пользователя будет более 50 товаров, и они получат последнюю скидку, которая является самой большой.Примерно так:

public function product_discounts($products_count)
{
    $discount_slabs = [
        '10' => '15',
        '20' => '25',
        '30' => '35',
        '50' => '50',
    ];

    // set the base discount
    $this->discount = 0;

    foreach ($discount_slabs as $count => $discount) {
        if ($products_count <= $count) {
            // if less than this bracket, return the current discount
            return $this->discount;
        }
        // otherwise, increase the discount level
        $this->discount = $discount;
    }
    return $this->discount = $discount;
}

Демо на 3v4l.org

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