Как увеличить значение переменной на 5 итераций с несколькими условиями - PullRequest
0 голосов
/ 09 ноября 2019

Я пытаюсь поместить некоторые фрагменты кода в цикл. Чего я хочу добиться, так это добавить налог к ​​сумме каждого добавленного количества продукта.

if($items['qty'] >= 5 && $items['qty'] < 10){
    $tax += $items[$type] * 1;
}

if($items['qty'] >= 10 && $items['qty'] < 15){
    $tax += $items[$type] * 2;
}

if($items['qty'] >= 15 && $items['qty'] < 20){
    $tax += $items[$type] * 3;
}
if($items['qty'] >= 20 && $items['qty'] < 25){
    $tax += $items[$type] * 4;
}

Я пробовал этот код, он работает со статическим значением. Было бы здорово, если бы кто-нибудь помог мне поместить этот код в цикл.

Пример: налог = 10 долларов США. Для продуктов с 1 по 4 налог составит 10 долларов. Для продуктов с 5 по 9 налог составит 20 долларов, для продуктов с 9 по 14 налог составит 30 долларов, так что ...

Ответы [ 4 ]

0 голосов
/ 10 ноября 2019

Наконец я достиг этого, используя функции массива и цикл foreach. Это может быть длинный код, но я не смог быстро его достичь.

            if ($items['qty'] >= 5){
                  $tax += $items[$type];   // $items[$type] is a tax that is being fetched from the product table
                  // Calculation Start
                  $keys = range(1, 25);
                  $num = range($items['qty'], $items['qty'] + 5);
                  $a = array_fill_keys($keys, $num);

                  foreach ($a as $keys => $endnum) {
                        if ($endnum[$keys] % 5 == 0) {
                            if($items['qty'] >= $items['qty'] && $items['qty'] < $endnum[$keys]){
                                $range = range(5, 10000, 5);
                                $count = array_search($endnum[$keys], $range);
                                $tax += $items[$type] * $count; 
                            }
                            break;
                        }
                  }
                  // Calculation Ends
            }else{
                $tax += $items[$type];
            }
0 голосов
/ 09 ноября 2019

Это должно помочь в расчете фактора. Что здесь типа $?

$items['qty'] = 24;
$tax = 10;
$floorFactor = floor($items['qty'] / 5);

$factor = $floorFactor === 0 ? 1 : $floorFactor;

echo '$floorFactor is ' . floor($items['qty'] / 5);

$tax += $items['qty'] * $factor;

echo "<br > tax is $tax <br />";
0 голосов
/ 09 ноября 2019

Есть много способов сделать это, и вам может не понадобиться цикл (может быть достаточно 3 строки кода), но вы хотите цикл, вы можете попробовать что-то вроде этого. Как вы и просили, это цикл:

$ j с шагом 1 на единицу в числовом порядке, поэтому каждый раз, когда он будет кратен 5, он будет увеличивать мультипликатор на 10 (ваш налог) до значения в $items ['qty'].

$ мультипликатор в начале равен 10, затем он будет увеличиваться на 10 в цикле для каждых 5 элементов, для обслуживания, если вы изменяете налоговую стоимость, вы меняете только этуone.

($ j% 5) === 0), чтобы проверить, является ли $ j кратным 5, здесь же для обслуживания вам нужно будет изменить кратное, если вы решите, что хотите больше илименьше предметов для изменения налога.

    $multiplicator = 10; 
             for($j = 1; $j <= $items['qty']; $j++){ 
                     if(($j % 5) === 0){ 
                         $multiplicator += 10;
                         }
                     //echo $j."-".$multiplicator."<br>"; // to check how it works
                     }
//$tax += $items[$type] + $multiplicator; // I would finish like that but i don't know what is $type
// so to match your multiplication number in $tax += $items[$type] * x you need the code below as well
//(($multiplicator/10)-1) is to match your multiplication numbers in your code as $tax += $items[$type] * x;
        if((($multiplicator/10)-1) == 0){ 
            $tax += $items[$type]; // less than 5 items
            }
        else{
            $tax += $items[$type] * (($multiplicator/10)-1); // 5 items and above 
            }
0 голосов
/ 09 ноября 2019

$ items ['data'] = массив (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15);

$ налог = 10;

$ j = 5;

$ k = 1;для ($ i = 0; $ i <$ j; $ i ++) {</p>

echo $items['data'][$i];

} $ j = $ j + 5;

эхо "
". $ налог* $ k. "
";

$ k = $ k + 1;

для ($ i = 5; $ i <$ j; $ i ++) {</p>

echo $items['data'][$i];

} $ j = $ j + 5;

эхо "
". $ Налог * $ k. "
";

$ k = $k + 1;

для ($ i = 10; $ i <$ j; $ i ++) {</p>

echo $items['data'][$i];

}

$ j = $ j + 5;

echo "
". $ Tax * $ k. "
";

$ k = $ k + 1;

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