这似乎是一个奇怪的问题,但这是我自己无法解决的问题。如果我要说,有一个数字,如001分配给变量$ add,那么想要执行这样的操作:
$me = $add + 1;
如何在操作后保持此号码中的“无用”前导0?
完整概述:
<?php
$add = 001;
$me = $add + 1;
?>
我想要的输出是002,但我收到的输出只是2.我也希望能够向后执行此操作,从002开始减去1,产生001而不是简单地为1.
答案 0 :(得分:2)
你无意中将小数表示法与octal notation混淆。
$a = 0123; // octal number (equivalent to 83 decimal)
所以如果你从010中减去001你就不会得到009! (有关示例,请参阅this calculator)
如果您确实要显示带有前导零的数字,那就是输出格式问题。有关详细信息,请参阅this SO answer。
答案 1 :(得分:0)
如果您始终希望号码有三位数,则可以使用sprintf
sprintf('%03d', 2); # prints "002"
如果位数是可变的并且取决于原始输入,则必须先确定所需的位数,然后将其放在format参数中。
此外,在获取起始值时,请确保您不会意外地以八进制形式获取它(在解析输入字符串时不应该发生这种情况,这些将被视为十进制,但在程序中小心使用文字)
答案 2 :(得分:0)
你想str_pad
这样的事情:
<?php
$add = 001; //starting number
$number_to_pad = $add + 1; // echoing this would write "2"
$desired_length = 3; // adjust accordingly to how long you want you number to be
$output = str_pad($number_to_pad, $desired_length, '0', STR_PAD_LEFT);
// echo $add; // would write out '1'
// echo $number_to_pad; // would write out '2'
echo $output; // writes '002' as desired
?>