我有两个动态变量
$numberOfX = 2;
和
$numberOfY = 5;
我面临的挑战是我需要将数字5(numberOfY
)除以2(numberOfX
)。这是一个问题,因为我要么通过计算(除法)得到一个像2,5这样的浮动数字,要么我可以选择(ceil)将它四舍五入然后我得到3(并且它将会超过5) ,即6)。
我需要一个没有小数的整数。但它仍然不会比5更多或更少。
理想情况下,我想要一个数组,例如3和2。因为它添加了5。
如何在PHP中执行此操作,记住numberOfX和numberOfY可以是任何数字?
答案 0 :(得分:1)
$numberOfX = 3;
$numberOfY = 5;
$result = array_fill(0, $numberOfX, (int) floor($numberOfY / $numberOfX));
$i = 0;
while (array_sum($result) !== $numberOfY) {
$result[$i++]++;
}
var_dump($result, array_sum($result));
答案 1 :(得分:0)
$numberOfX = 2;
$numberOfY = 5;
$intDivisionValues[] = intval($numberOfY/$numberOfX);
$intDivisionValues[] = $numberOfY - intval($numberOfY/$numberOfX);
$ intDivisionValues将是:
Array
(
[0] => 2
[1] => 3
)
答案 2 :(得分:0)
您的问题并不完全清楚您正在寻找的算法。我猜这可能会接近:
<?php
$numberOfX = 2;
$numberOfY = 5;
$full = intval($numberOfY / $numberOfX);
$part = intval($numberOfY % $numberOfX);
$output = array_fill(1, $numberOfX-1, $full);
$output[] = $full+$part;
var_dump($output);
示例值的输出为:
array(2) {
[0] =>
int(2)
[1] =>
int(3)
}
对于使用不同值的示例,尤其是$numberOfX
的不同值,显然结果会有所不同。这里是值3和31的输出:
array(3) {
[0] =>
int(10)
[1] =>
int(10)
[2] =>
int(11)
}
您可以使用其他值来查看是否符合您的需求......
该算法的行为与@WilliamJanoti在答案中的建议不同。如上所述:你的问题并不是很清楚你在寻找什么......