In PHP, how do I add to a zero-padded numeric stri

2019-02-06 15:30发布

If I have a variable in PHP containing 0001 and I add 1 to it, the result is 2 instead of 0002.

How do I solve this problem?

4条回答
我命由我不由天
2楼-- · 2019-02-06 15:46

It would probably help you to understand the PHP data types and how they're affected when you do operations to variables of various types. You say you have "a variable in PHP say 0001", but what type is that variable? Probably a string, "0001", since an integer can't have that value (it's just 1). So when you do this:

echo ("0001" + 1);

...the + operator says, "Hm, that's a string and an integer. I don't know how to add a string and an int. But I DO know how to convert a string INTO an int, and then add two ints together, so let me do that," and then it converts "0001" to 1. Why? Because the PHP rules for converting a string to an integer say that any number of leading zeroes in the string are discarded. Which means that the string "0001" becomes 1.

Then the + says, "Hey, I know how to add 1 and 1. It's 2!" and the output of that statement is 2.

查看更多
走好不送
3楼-- · 2019-02-06 15:47
$foo = sprintf('%04d', $foo + 1);
查看更多
Melony?
4楼-- · 2019-02-06 15:50

Another option is the str_pad() function.

$text = str_pad($text, 4, '0', STR_PAD_LEFT);
查看更多
戒情不戒烟
5楼-- · 2019-02-06 16:08
<?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
?>
查看更多
登录 后发表回答