Php除法,无小数分隔结果

Php除法,无小数分隔结果,php,Php,我想做的是: $numbertodivise = 500; 500 / 3 = 166,66 我想将数字除以最公平的部分和最后一部分以增加差异,例如: 500 / 3 will give me : $result1 = 166 $result2 = 166 $result3 = 168 我想要每个除法的代码,最好的方法是什么?这里我提取了数字除法的余数,例如,如果模为3,则为2,然后我将除法的整数部分进行除法并提取出来,这样我就可以将余数添加到最后一个除法的数字

我想做的是:

   $numbertodivise = 500;

   500 / 3 = 166,66
我想将数字除以最公平的部分和最后一部分以增加差异,例如:

  500 / 3 will give me :
  $result1 = 166
  $result2 = 166
  $result3 = 168

我想要每个除法的代码,最好的方法是什么?

这里我提取了数字除法的余数,例如,如果模为3,则为2,然后我将除法的整数部分进行除法并提取出来,这样我就可以将余数添加到最后一个除法的数字中,在这种情况下为166

<?php
$numbertodivise = 500;
$no = 3;

$intnumber = intval($numbertodivise / $no);
$rem = $numbertodivise % $no;
$array = [];

for($i=1;$i<=$no;$i++) {
    if($i==$no) {
        $array[] = $intnumber + $rem;
    } else {
        $array[] = $intnumber;
    }
}

echo "<pre>";
print_r($array);
?>
要制作您提到的变量,请使用:

function get_results($val, $qt){
    $division = intdiv($val, $qt); // PHP <7: $division = ($val - ($val % $qt)) / $qt;
    $ret = array_fill(0, $qt, $division); // fill array with $qt equal values
    if($division != $val / $qt){ // if not whole division, add remaning to lsat element
        $ret[count($ret)-1] = $ret[0] + ($val % $qt);
    }return $ret;
}

对于PHP7,您可以使用这个函数check comment For这是一种使用intval和模运算符%的方法:


一种不循环并使用基本PHP函数的方法

我使用array_fill将数组填充为计算的底部。 然后将剩余部分添加到数组中的最后一项


说什么?你能用另一种方式解释吗?看一看。对于最后一部分,你可以添加模。一个好的答案总是会解释做了什么以及为什么这样做,不仅是为了OP,而且是为了将来的访问者。@JayBlanchard解释添加了或不添加,没有尝试。一个好的答案总会有一个解释,说明做了什么以及为什么这样做,不仅是为了OP,也是为了未来的SO访客。好的,谢谢你的提示,我想如果你喜欢的话试试,而不是像我不知道自己在做什么那样去尝试。我编辑了我的答案以便更具可读性。谢谢。这仍然不能解释你的方法或者你改变了什么。好的。希望你的下一个选民会回来取消他们的投票。这会很好,但不是必须的。希望如此:谢谢你的建议。
<?php list($result1, $result2, $result3) = $array; ?>
function get_results($val, $qt){
    $division = intdiv($val, $qt); // PHP <7: $division = ($val - ($val % $qt)) / $qt;
    $ret = array_fill(0, $qt, $division); // fill array with $qt equal values
    if($division != $val / $qt){ // if not whole division, add remaning to lsat element
        $ret[count($ret)-1] = $ret[0] + ($val % $qt);
    }return $ret;
}
print_r(get_results(500, 3));
Array
(
    [0] => 166
    [1] => 166
    [2] => 168
)
<?php
    $divide = 500;
    $divideWith = 3;

    for($i=0; $i < $divideWith; $i++)
    {
        echo "This is result".($i+1).": ";

        // If $i is not on the last iteration
        if($i != $divideWith-1)
            // intval() returns integer part without rounding. It
            // floors the value inside the parenthesese.
            echo intval($divide/$divideWith).'<br/>';
        else
            // ($divide % $divideWidth) will return the remainder of
            // division between $divide and $divideWidth. 
            // The remainder is always an int value.
            echo (int($divide/$divideWith) + ($divide % $divideWith)).'<br/>';
    }
?>
This is result1: 166
This is result2: 166
This is result3: 168
$number = 500;
$divise =3;

$arr = array_fill(0, $divise, floor($number/$divise));
$arr[count($arr)-1] += $number-(floor($number/$divise)*$divise);
// Above line can also be . $arr[count($arr)-1] += $number-$arr[0]*$divise;
Var_dump($arr);