1

这似乎是一个奇怪的问题,但这是我自己无法解决的问题。如果我要说,将诸如 001 之类的数字分配给变量 $add,然后想要执行如下操作:

$me = $add + 1;

手术后如何保持这个数字中“无用”的前导0?

完整概述:

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

我想要的输出是 002,但我收到的输出只是 2。我也希望能够向后执行此操作,例如从 002 减去 1 得到 001 而不是简单的 1。

4

3 回答 3

2

无意中将十进制表示法与八进制表示法混淆了。

$a = 0123; // octal number (equivalent to 83 decimal)

所以如果你从 010 中减去 001,你就不会得到 009!(见这个计算器的例子)

如果您真的想显示带有前导零的数字,那就是输出格式问题。有关更多信息,请参阅此 SO 答案

于 2012-07-23T09:58:04.437 回答
0

如果您总是希望数字为三位数,则可以使用 sprintf

 sprintf('%03d', 2);  # prints "002"

如果位数是可变的并且取决于原始输入,您必须首先确定您想要多少位数,然后将其放入格式参数中。

此外,在获取起始值时,请确保您不会意外地以八进制获取它(在解析输入字符串时不应该真的发生这种情况,这些将被视为十进制,但在程序中小心使用文字)。

于 2012-07-23T10:06:07.517 回答
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    
?>
于 2012-07-23T10:07:22.830 回答