PHP使用不均匀的数字

时间:2015-03-14 13:52:29

标签: php arrays

我有两个动态变量

$numberOfX = 2;

$numberOfY = 5;

我面临的挑战是我需要将数字5(numberOfY)除以2(numberOfX)。这是一个问题,因为我要么通过计算(除法)得到一个像2,5这样的浮动数字,要么我可以选择(ceil)将它四舍五入然后我得到3(并且它将会超过5) ,即6)。

我需要一个没有小数的整数。但它仍然不会比5更多或更少。

理想情况下,我想要一个数组,例如3和2。因为它添加了5。

如何在PHP中执行此操作,记住numberOfX和numberOfY可以是任何数字?

3 个答案:

答案 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));

Demo

答案 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在答案中的建议不同。如上所述:你的问题并不是很清楚你在寻找什么......