PHP с расчетом цикла
Может чем-то помочь, не знаю, как решить эту проблему с помощью цикла в PHP
$pay = [20, 40 , 89, 300, 190, 15]; <br/>
$Capital = 1000; <br/>
Я хочу, чтобы цикл достиг этого результата
1000-20 = 980 <br/>
980-40 = 940 <br/>
940-89 = 851 <br/>
851-300 = 551 <br/>
551-190 = 361 <br/>
361-15 = 346 <br/>
Мой код:
$newbal = $Capital-$pay <br/>
for ($amount=$newbal; $amount>=$Capital; $amount-=$pay) {
echo “{$amount} ”; <br/>
$amount++; <br/>
}
Мой код дает мне этот результат:
1000-20 = 980 <br/>
1000-40 = 960 <br/>
1000-89 = 911 <br/>
1000-300 = 700 <br/>
1000-190 = 810 <br/>
1000-15 = 985 <br/>
5 ответов
Простой цикл foreach по
$pay
массив с
$balance
переменная позволит выполнить простой расчет внутри цикла:
$pay = [20, 40 , 89, 300, 190, 15];
$Capital = 1000;
$balance = $Capital;
foreach ($pay as $p) {
printf("%d - %d = %d\n", $balance, $p, $balance = $balance - $p);
} ########################
Выход:
1000 - 20 = 980
980 - 40 = 940
940 - 89 = 851
851 - 300 = 551
551 - 190 = 361
361 - 15 = 346
Вы несколько усложнили его, и показанный вами код выдает ошибки, а не указанный вами вывод.
Вы можете добиться этого более просто, перебирая
$pay
массив напрямую с
foreach
, и уменьшая остаток на сумму в текущей статье оплаты каждый раз:
$pay = [20, 40 , 89, 300, 190, 15];
$capital = 1000;
$balance = $capital;
foreach ($pay as $item)
{
$output = $balance."-".$item." = ";
$balance -= $item;
$output .= $balance;
echo $output.PHP_EOL;
}
Рабочая демонстрация: http://sandbox.onlinephpfunctions.com/code/dd1189f2d48b3428986ce52a087fb425ee970621
Вместо использования сложного
for
цикл, я бы рекомендовал использоватьforeach
зацикливаться на
$pay
массив и переопределить после
echo
.
Мы можем использовать
"${}"
синтаксис для использования переменных внутри строк .
Рассмотрим этот пример:
<?php
$pay = [20, 40 , 89, 300, 190, 15];
$Capital = 1000;
$newBal = $Capital;
foreach ($pay as $amount) {
echo "${Capital} - ${amount} = " . ($Capital - $amount) . PHP_EOL;
$Capital -= $amount;
}
Это выведет следующее, как вы можете проверить в этой онлайн-демонстрации .
1000 - 20 = 980
980 - 40 = 940
940 - 89 = 851
851 - 300 = 551
551 - 190 = 361
361 - 15 = 346
Мы можем выполнить задание
$Capital
встроенный, поэтому я прочитал:
echo "${Capital} - ${amount} = " . ($Capital = $Capital - $amount) . PHP_EOL;
Но для удобочитаемости я бы добавил дополнительную строку, как в моем примере.
<?php
$pay = [20, 40 , 89, 300, 190, 15];
$Capital = 1000;
foreach ($pay as $amount) {
$newCap = $Capital - $amount; // calculate the new amount for output
echo $Capital . ' - ' . $amount . ' = ' . $newCap . '<br>'; // output it
$Capital = $newCap; // update the new amount for the next iteration
}
Онлайн-демонстрация: https://3v4l.org/qmqcv
Приведенный ниже код перебирает
$pays
массив целых чисел.
каждый цикл вычисляет уравнение
$captial
минус одно из целых чисел и повторений, это вычисляется и сохраняется в виде строки в
$lines
переменной, и в конце каждого цикла мы пересчитываем и обновляем новое значение
$capital
на основании предыдущего расчета
capital = capital - pay
<?php
$pays = [20, 40 , 89, 300, 190, 15];
$capital = 1000;
$lines = [];
foreach($pays as $pay){
$lines[] = $capital . "-" . $pay . " = " . ($capital - $pay) . "<br/>";
$capital -= $pay;
}
echo implode("\n", $lines);
?>