8

我正在寻找一种在 PHP 中将数字等分的有效方法。数字将始终为整数(无浮点数)。

假设我有一个数组 $hours,其值从“1”到“24”($hours['1'] 等)和一个包含整数的变量 $int。我想要实现的是将 $int 的值平均分布在 24 个部分中,这样我就可以将值分配给每个相应的数组条目。(如果数字是奇数,剩余的将添加到 24 中的最后一个或第一个值)。

问候,

4

3 回答 3

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
于 2012-04-28T18:32:19.083 回答
4

试试这个代码

<?php
$num = 400;
$val = floor($num/24);

for($i=0;$i<24;$i++) {
    $arr[$i] = $val;
}

$arr[0] += $num - array_sum($arr);
?>
于 2012-04-28T18:35:44.837 回答
0
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); 
于 2020-04-15T18:22:26.833 回答