这是一个棘手的问题:我想在这个数字上加 +1:012345675901,预期的结果是:012345675902
。相反,我得到:2739134
当我这样做时:
echo (012345675901+1);
当我尝试:
echo ('012345675901'+1);
我明白了:12345675902
这非常接近我的需要,但它删除了前导零。
当我这样做时:
echo (int) 012345675901;
我明白了2739133
。我也试过 bcadd() 没有成功:
echo bcadd(012345675901, 1);
这导致2739134
.
我知道我在这里遗漏了一些东西。我将衷心感谢您的帮助!
更新 1 答案 1 说这个数字是八进制的:
function is_octal($x) {
return decoct(octdec($x)) == $x;
}
$number = is_octal(012345675901);
echo var_dump($number);
以上返回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
谢谢你们每一个人的帮助!上面的代码产生:012345675902
如预期的那样