我正在寻找一种在PHP中有效分配数字的方法。数字将始终为整数(无浮点)。
假设我有一个数组$ hours,其值从“1”到“24”($ hours ['1']等)和一个包含整数的变量$ int。我想要实现的是将$ int的值平均分配到24个部分中,这样我就可以为每个相应的数组条目赋值。 (如果数字是奇数,则剩余部分将被添加到24中的最后一个或第一个值。)
此致
答案 0 :(得分:17)
这是您正在寻找的算法;它会在N
个单元格上均匀分布整数K
:
for i = 0 to K
array[i] = N / K # integer division
# divide up the remainder
for i = 0 to N mod K
array[i] += 1
答案 1 :(得分:3)
试试此代码
<?php
$num = 400;
$val = floor($num/24);
for($i=0;$i<24;$i++) {
$arr[$i] = $val;
}
$arr[0] += $num - array_sum($arr);
?>
答案 2 :(得分:0)
function split($x, $n)
{
// If we cannot split the
// number into exactly 'N' parts
if($x < $n)
echo (-1);
// If x % n == 0 then the minimum
// difference is 0 and all
// numbers are x / n
else if ($x % $n == 0)
{
for($i = 0; $i < $n; $i++)
{
echo ($x / $n);
echo (" ");
}
}
else
{
// upto n-(x % n) the values
// will be x / n
// after that the values
// will be x / n + 1
$zp = $n - ($x % $n);
$pp = $x / $n;
for ($i = 0; $i < $n; $i++)
{
if($i >= $zp)
{
echo (int)$pp + 1;
echo (" ");
}
else
{
echo (int)$pp;
echo (" ");
}
}
}
}
// Driver code
$x = 5;
$n = 3;
split( $x, $n);