在php中将一个数字除以(分布)整数


Divide (distribute) a number in wholenumbers in php

如果除数不是被除数的一个因子,我想把给定的数字除以整数,并对第一个数字进行四舍五入。

例如我的除数应始终为24。

股息(d)=4。ans=array(1, 1, 1, 1);

d=10.

ans=array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1);

d=24.

ans=array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);


-----现在是转折点了。-------


d=25.

ans=array(2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);

d=35.

ans=array(2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);

d=79.

ans=array(4, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3);

在我做这件事的同时,让我也描述一下我试图从中实现的目标。。

我想自动化一项任务,该任务将对给定数量的对象执行特定操作(d,它将随着时间的推移而变化(读取增加)。)。

现在,我将每天每小时运行一个cron,如果我希望平衡/分配每天必须运行任务的无对象,这将给我一个24的常除数。

我搜索了这种划分技术,发现了这个问题,这与我所需要的有点接近,尽管关于如何在php中实现它,我有点迷失了方向。

类似于:

$x = floor($d / 24);
$y = $d % 24;
$ans = array_fill(0, 24, $x);
if ($y > 0)
    array_splice($ans, 0, $y, array_fill(0, $y, $x+1));
$ans = array_filter($ans);

我刚刚想到的一个更简单的方法是,我们可以在运行时通过传递该键的假定索引来生成数字,而不是将所有东西都放在数组中。

比如说我想要第4个位置的元素的值。

$index = 4;
$dividend = 79;
$divisor = 24;
$quotient = $dividend % $divisor;
$value = $dividend / $divisor;
if($quotient && ($quotient - $index) >= 0){
  $value += 1;
}