我正在寻找一种在 PHP 中将数字等分的有效方法。数字将始终为整数(无浮点数)。
假设我有一个数组 $hours,其值从“1”到“24”($hours['1'] 等)和一个包含整数的变量 $int。我想要实现的是将 $int 的值平均分布在 24 个部分中,这样我就可以将值分配给每个相应的数组条目。(如果数字是奇数,剩余的将添加到 24 中的最后一个或第一个值)。
问候,
这是您正在寻找的算法;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
试试这个代码
<?php
$num = 400;
$val = floor($num/24);
for($i=0;$i<24;$i++) {
$arr[$i] = $val;
}
$arr[0] += $num - array_sum($arr);
?>
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);