我需要将两个数字分开并得到余数。但是当我尝试使用for循环打印剩余部分时,它将返回数字的总时间1,如下所示:当计算为19/5时,余数为4但返回1111
这是我的表格:
<form method="post">
<input type="text" name="n1"><br>
<input type="text" name="n2"><br>
<input type="submit" name="btnClick" value="click">
</form>
这是我的PHP:
if (isset($_POST['btnClick'])) {
$number1 = $_POST['n1'];
$number2 = $_POST['n2'];
if (!is_numeric($number1) || !is_numeric($number2) || strpos($number1, ".") || strpos($number2, "."))
{
echo "error";
}
elseif ($number1 <= 0 && $number2 <= 0 || $number1 < 0 || $number2 <= 0) {
echo "error";
}
elseif(!$number1 <= 0 && !$number2 <= 0 || !$number1 < 0 || !$number2 <= 0){
$answer = $number1 / $number2;
$RoundedAnswer = round($answer);
if ($RoundedAnswer * $number2 > $number1) {
$Result = $RoundedAnswer - 1;
$ResultRemaind = $Result * $number2;
for ($i=$ResultRemaind; $i < $number1; $i++) {
echo count($i);
}
}
else{
$Result = $RoundedAnswer;
}
}
}
你需要为此创建一个计数器。检查以下代码:
$nU = 15;
$nG1 = 19;
$counter = 0;
for ($i=$nU; $i < $nG1; $i++) {
$counter++;
}
echo $counter; // showing 4 as you want. Counting for 15 , 16, 17 and 18
或者您可以使用php abs函数减去两个值,如下所示:
$nU = 15;
$nG1 = 19;
echo abs($nG1 - $nU); // 4
希望它能帮到你。
为什么循环,为什么不只是....
<?php
$nU = 15;
$nG1 = 19;
echo $nG1 - $nU;
?>
echo (19 % 5)
// outputs 4
或更通用的版本,也确保使用整数。也使用绝对值,因为%
的结果在PHP中可能是负数。
$remainder = (int) $num1 % (int) $num2;
$remainder = abs($remainder); // convert this to a positive number, regardless of sign.
%
是modulo
运算符,它给出了两个整数除法的余数。
您显示四次1的原因是:
$ResultRemaind = $Result * $number2;
for ($i=$ResultRemaind; $i < $number1; $i++) {
echo count($i);
}
count()
为您提供变量中的元素数量。 $i
只是一个数字,即$ i只包含一个元素。因此count($i)
总是返回1
。
你在循环中使用echo
,这意味着你在循环运行时打印一些东西(在这种情况下是1
)。您可以在循环中执行类似$ counter ++的操作,然后在循环完成后执行echo $counter
。
我会这样做....
<?php
$_POST['btnClick'] = TRUE;
$_POST['n1'] = '19';
$_POST['n2'] = '5';
if ( isset ( $_POST['btnClick'] ) )
{
if ( ( ! empty ( $_POST['n1'] ) && ! empty ( $_POST['n2'] ) && ctype_digit ( $_POST['n1'] ) && ctype_digit ( $_POST['n2'] ) ) )
{
$total = round ( ( $_POST['n1'] / $_POST['n2'] ) );
if ( ( $total * $_POST['n2'] ) > $_POST['n1'] )
{
echo ( $_POST['n1'] - ( ( $total - 1 ) * $_POST['n2'] ) );
}
else
{
echo $total;
}
}
else
{
echo "Error, inputs must be type integer!";
}
}
else
{
echo "Error, no button click!";
}
?>
如果您只想要数字差异,那么您可以按照以下方式操作:
$a = 15;
$b = 19;
echo abs($a - $b);
输出4。
要么
$a = (any value);
$b = (any value);
if( $a > $b ){
echo abs($a - $b);
} else {
echo $b - $a;
}
要么
$a = (any value);
$b = (any value);
$counter = 0;
if( $a > $b ){
for ($i=$a; $i < $b; $i++) {
$counter++;
}
} else{
for ($i=$b; $i < $a; $i++){
$counter++;
}
}
echo $counter;
尝试这个或删除计数功能只是echo $ i变量
$nU = 15;
$nG1 = 19;
for ($i=$nU; $i < $nG1; $i++) {
echo $i;
echo "<br>";
}