#php #math #while-loop
#php #математика #цикл выполнения
Вопрос:
У меня возникла проблема с написанием подходящей логики цикла while на php, вот мой код:
$applied_to = "Battery"; # rule applies to this product
$items = $_GET['items']; # how many items we have of this product
$forquan = 3; # rule applies to this quantity of product
$autoadd = "Power Inverter"; # when rule is met add this product.
if ($applied_to == "Battery"){
print "We Have $items $applied_to<br>";
print "The rule says we need 1 $autoadd for each 1-$forquan $applied_to<br><hr />";
$counter = $items;
while($counter > 0){
if ($forquan / $items > 1){
print "we need 1 $autoadd<br>";
}
$counter--;
}
}
Теперь я хочу добавить один дополнительный продукт, $autoadd
если у нас 1-3 батареи, и 2 $autoadd
, если у нас 3-6 и так далее.
Я перепробовал так много различных комбинаций операторов while loops if и т.д., Но, похоже, я не могу получить идеальный цикл.
Ответ №1:
Вы можете просто вычислить количество требуемых продуктов, а затем выполнить итерацию по этому числу:
<?php
$applied_to = "Battery"; # rule applies to this product
$items = $_GET['items']; # how many items we have of this product
$forquan = 3; # rule applies to this quantity of product
$autoadd = "Power Inverter"; # when rule is met add this product.
if ($applied_to == "Battery"){
print "We Have $items $applied_to<br>n";
print "The rule says we need 1 $autoadd for each 1-$forquan $applied_to<br>n<hr />n";
$countAddProducts = ceil($items / $forquan);
for ($i=0; $i<$countAddProducts; $i ) {
print "we need 1 $autoadd<br>n";
}
}
Затем выходные данные циклов n
умножаются на строку «нам нужен 1 инвертор мощности», где n
это округленное значение, $items
деленное на $forquan
.
Ответ №2:
<?php
$applied_to = "Battery"; # rule applies to this product
$items = $_GET['items']; # how many items we have of this product
$forquan = 3; # rule applies to this quantity of product
$autoadd = "Power Inverter"; # when rule is met add this product.
if ($applied_to == "Battery"){
print "We Have $items $applied_to<br>";
print "The rule says we need 1 $autoadd for each 1-$forquan $applied_to<br><hr />";
while($items > 0){
echo abs($forquan/$items); #check abs value
if (abs($forquan/$items) > 1){
print "we need 1 $autoadd<br>";
}
$items--;
}
}
?>