Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如果我打印我的变量,我将得到四次1,而不是数字4_Php_For Loop_Count_Echo - Fatal编程技术网

Php 如果我打印我的变量,我将得到四次1,而不是数字4

Php 如果我打印我的变量,我将得到四次1,而不是数字4,php,for-loop,count,echo,Php,For Loop,Count,Echo,我需要把这两个数除以,得到余数。但当我尝试使用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="btnClic

我需要把这两个数除以,得到余数。但当我尝试使用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

希望它能对您有所帮助。

试试这个或删除计数函数,只需回显$i变量即可

$nU = 15;
$nG1 = 19;
for ($i=$nU; $i < $nG1; $i++) { 

   echo $i;
   echo "<br>";
 }

为什么是循环,为什么不只是

<?php

$nU = 15;

$nG1 = 19;

echo $nG1 - $nU;

?>
或者更通用的版本,也可以确保使用整数。还使用绝对值,因为%的结果在PHP中可能是负数

$remainder = (int) $num1 % (int) $num2;
$remainder = abs($remainder); // convert this to a positive number, regardless of sign.
%是模运算符,它给出两个整数除法的余数

显示四次1的原因是:

$ResultRemaind = $Result * $number2;
for ($i=$ResultRemaind; $i < $number1; $i++) { 
    echo count($i);
}
count提供变量中元素的数量$i只是一个数字,即$i正好包含一个元素。因此count$i始终返回1


在循环中使用echo,这意味着在这种情况下,打印内容的次数与循环运行的次数相同。您可以在循环中执行类似$counter++的操作,然后在循环完成后回显$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


你期望的结果是什么?为什么使用计数?我不知道为什么这有一个上升投票。这是一个愚蠢的错误。只要使用$nG1-$nU,您就可以得到值。我只需要两个数字之间的差,但是通过使用for循环。。。我得问问。。。为什么?$nG1-$nU有什么问题?如果你想得到两个数字之间的差值,避免15-19=-4,也就是说,你想知道15和19之间的差值是4而不是-4,你可以使用这个函数。echo abs$nU-$nG1-根本不需要循环。因为我不想知道它为什么不工作,我知道我可以使用echo$nG1-$nU,但我只想知道它为什么不与循环一起工作
<?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); 
$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;