PHP将数字增加一个

ABC*_*ABC 3 php math numbers

这是一个棘手的问题:我想为这个数字加上+1:012345675901,预期的结果是:012345675902.相反,我得到:2739134当我这样做时:

echo (012345675901+1);
Run Code Online (Sandbox Code Playgroud)

当我尝试:

echo ('012345675901'+1);
Run Code Online (Sandbox Code Playgroud)

我明白了:12345675902这与我需要的非常接近,但它消除了前导零.

当我这样做:

echo (int) 012345675901;
Run Code Online (Sandbox Code Playgroud)

我得到2739133.我也试过bcadd()但没有成功:

echo bcadd(012345675901, 1);
Run Code Online (Sandbox Code Playgroud)

结果导致了2739134.

我知道我在这里遗漏了一些东西.我将衷心感谢您的帮助!

更新1 答案1说数字是八进制的:

function is_octal($x) {
    return decoct(octdec($x)) == $x;
}

$number = is_octal(012345675901);
echo var_dump($number);
Run Code Online (Sandbox Code Playgroud)

以上返回false.我以为我需要将它从八进制转换为普通字符串但不起作用.我不能避免不使用上面的数字 - 我只需要增加一个.

编辑2

这是正确的代码:

$str = '012345675901';

$str1 = ltrim($str, '0'); // to remove the leading zero
$str2 = bcadd($str1, 1); // +1 to your result
$str3 = strlen($str); // get the length of your first number
echo str_pad($str2, $str3, '0', STR_PAD_LEFT); // apply zeros
Run Code Online (Sandbox Code Playgroud)

谢谢你们每一个人的帮助!上面的代码产生:012345675902正如预期的那样

Dan*_*ite 8

领先0者将你的号码视为八进制.

0输出作为字符串所需的前导,纯粹是一种表示.