执行计算时保持“无用”0

时间:2012-07-23 09:55:18

标签: php math addition subtraction

这似乎是一个奇怪的问题,但这是我自己无法解决的问题。如果我要说,有一个数字,如001分配给变量$ add,那么想要执行这样的操作:

$me = $add + 1;

如何在操作后保持此号码中的“无用”前导0?

完整概述:

<?php
$add = 001;
$me = $add + 1;
?>

我想要的输出是002,但我收到的输出只是2.我也希望能够向后执行此操作,从002开始减去1,产生001而不是简单地为1.

3 个答案:

答案 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    
?>