How to increment an integer represented as an integer array of digits by one in PHP

1 Answer

0 votes
function incrementByOne($digits) {
    $carry = 1;
    for ($i = count($digits) - 1; $i >= 0; $i--) {
        $digits[$i] += $carry;
        if ($digits[$i] == 10) {
            $digits[$i] = 0;
            $carry = 1;
        } else {
            $carry = 0;
            break;
        }
    }
    if ($carry == 1) {
        array_unshift($digits, 1); // Add 1 at the beginning if there's still a carry
    }
    
    return $digits;
}

$digits = [9, 9, 9];
$incremented = incrementByOne($digits);

echo "Result: ";
foreach ($incremented as $digit) {
    echo $digit . " ";
}
echo PHP_EOL;



/*
run:

Result: 1 0 0 0 

*/

 



answered Jul 2 by avibootz
...