11

如果我在 PHP 中有一个变量,0001并且我在其中添加 1,则结果是 2 而不是0002.

我该如何解决这个问题?

4

4 回答 4

21
$foo = sprintf('%04d', $foo + 1);
于 2009-04-05T02:39:58.660 回答
12

它可能会帮助您了解 PHP 数据类型以及当您对各种类型的变量进行操作时它们如何受到影响。你说你有“PHP中的一个变量说0001”,但那个变量是什么类型的?可能是一个字符串“0001”,因为整数不能具有该值(它只是 1)。所以当你这样做时:

echo ("0001" + 1);

...+操作员说,“嗯,这是一个字符串和一个整数。我不知道如何添加一个字符串和一个 int。但我知道如何将一个字符串转换为一个 int,然后将两个 int 加在一起,所以让我这样做,”然后它将“0001”转换为1。为什么?因为将字符串转换为整数的 PHP 规则表明字符串中任意数量的前导零都将被丢弃。这意味着字符串“0001”变为1。

然后+说,“嘿,我知道如何将 1 和 1 相加。它是 2!” 该语句的输出为 2。

于 2009-04-05T04:28:48.573 回答
9

另一种选择是str_pad()函数。

$text = str_pad($text, 4, '0', STR_PAD_LEFT);
于 2009-04-05T02:51:00.147 回答
3
<?php
#how many chars will be in the string
$fill = 6;
#the number
$number = 56;
#with str_pad function the zeros will be added
echo str_pad($number, $fill, '0', STR_PAD_LEFT);
// The result: 000056
?>
于 2011-04-15T20:06:14.193 回答