我需要用数字填充数组,下面是一些示例:
nbreParChargement = 4;对于10
预期输出:$niveaux = array(4,4,2);
4 + 4 + 2 = 10
nbreParChargement = 6;对于14
预期输出:$niveaux = array(6,6,2);
6 + 6 + 2 = 14
nbreParChargement = 16;对于13
预期输出:$niveaux = array(13);
13 = 13
nbreParChargement = 4;对于30
预期输出:$niveaux = array(4,4,4,4,4,4,4,2);
4 + 4 + 4 + 4 + 4 + 4 + 4 + 2 = 30
我试图解决此问题,但我不知道完美的解决方案:
function chargement($nbre, $nbreParChargement){
$niveaux = array();
for($i=0; $i<=$nbre; $i++){
$niveaux[$i] = $i + $nbreParChargement;
}
}
最佳答案
带有两行代码的另一种实现,适用于php> = 5.6:
function chargement($nbre, $nbreParChargement){
$niveaux = array_fill(0, floor($nbre/$nbreParChargement), $nbreParChargement);
$niveaux[] = $nbre - array_sum($niveaux);
return $niveaux;
}
var_dump(chargement(10, 4));
var_dump(chargement(14, 6));
var_dump(chargement(13, 16));
var_dump(chargement(30, 4));
array_fill
使用具有$nbre/$nbreParChargement
值的$nbreParChargement
条目填充数组。最后一个值是$nbre
与其他元素之和(由$nbreParChargement * floor($nbre/$nbreParChargement)
给出)之差,该差将始终> 0。Demo。
这仅适用于php> = 5.6,因为
array_fill
仅从该版本接受0
作为num
。以前,num
必须大于零。因此,对于任何版本的php:
function chargement($nbre, $nbreParChargement){
$niveaux = array();
if ($n = floor($nbre/$nbreParChargement)) {
$niveaux = array_fill(0, $n, $nbreParChargement);
}
$niveaux[] = $nbre - array_sum($niveaux);
return $niveaux;
}
Demo。
关于php - 用特定数字填充数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33100780/