如果我在PHP中有一个包含0001
的变量并向其添加1,则结果为2而不是0002
。
如何解决这个问题?
答案 0 :(得分:21)
$foo = sprintf('%04d', $foo + 1);
答案 1 :(得分:12)
当您对各种类型的变量进行操作时,它可能会帮助您理解PHP数据类型以及它们如何受到影响。你说你有“PHP中的变量说0001”,但那个变量是什么类型的?可能是一个字符串,“0001”,因为整数不能具有该值(它只是1)。所以当你这样做时:
echo ("0001" + 1);
... +
运算符说,“嗯,这是一个字符串和一个整数。我不知道如何添加字符串和int。但我知道如何转换字符串INTO int,然后将两个int添加在一起,所以让我这样做,“然后它将”0001“转换为1.为什么?因为用于将字符串转换为整数的PHP规则表示字符串中的任意数量的前导零都将被丢弃。这意味着字符串“0001”变为1。
然后+
说,“嘿,我知道如何添加1和1.它是2!”并且该陈述的输出是2。
答案 2 :(得分:9)
另一个选项是str_pad()功能。
$text = str_pad($text, 4, '0', STR_PAD_LEFT);
答案 3 :(得分: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
?>