dreampho Posted April 11, 2012 Share Posted April 11, 2012 Hi all. I am trying to add 1 to a number. The problem I have is that the number is 4 digits long. So for example the number could be 0007. I add one and it returns 8. I need it to return 0008. <?php $next = 0007 + 1; echo $next; ?> Can anyone show me how I can get the number to be 4 digits? Thank you Quote Link to comment https://forums.phpfreaks.com/topic/260728-adding-1-to-number/ Share on other sites More sharing options...
MMDE Posted April 11, 2012 Share Posted April 11, 2012 First problem is here: $next = 0007; PHP will automatically make it an int (number) type. It won't have any leading zeroes. So let's say it's a string instead. $number = '0007'; Now we can get the length of the number. $number_length = strlen($number); Then we can start adding one to the number: $number++; And finally to output it: echo str_pad($number, $number_length, '0', STR_PAD_LEFT); http://php.net/manual/en/function.str-pad.php <?php $number = '0007'; $number_length = strlen($number); $number++; echo str_pad($number, $number_length, '0', STR_PAD_LEFT); ?> Quote Link to comment https://forums.phpfreaks.com/topic/260728-adding-1-to-number/#findComment-1336312 Share on other sites More sharing options...
dreampho Posted April 11, 2012 Author Share Posted April 11, 2012 Thank you very much! Just to understand it a little more, how would I take a number, for example, 52, and want to make it add one, and then make the overall length 4, so 0053? Thank you! Quote Link to comment https://forums.phpfreaks.com/topic/260728-adding-1-to-number/#findComment-1336315 Share on other sites More sharing options...
requinix Posted April 11, 2012 Share Posted April 11, 2012 str_pad() works, but personally I prefer sprintf. $current = "0052"; // absolutely must be a string! $next = sprintf("%04u", $current + 1); Quote Link to comment https://forums.phpfreaks.com/topic/260728-adding-1-to-number/#findComment-1336316 Share on other sites More sharing options...
MMDE Posted April 11, 2012 Share Posted April 11, 2012 str_pad() works, but personally I prefer sprintf. $current = "0052"; // absolutely must be a string! $next = sprintf("%04u", $current + 1); Ah, yes. I just tried to break it down to as easy bites as possible. I'd say sprintf is a bit more complicated to understand, but might just be me! lol If the number has variable length: $current = "0052"; // absolutely must be a string! $next = sprintf('%0'.strlen($current).'u', $current + 1); If the number has pre-defined length: $current = 52; // does not need to be a string, can be a number! $length = 4; // the length, the amount of digits $next = sprintf('%0'.$length.'u', $current + 1); both examples using str_pad() instead: $current = '0052'; // absolutely must be a string! $next = str_pad($current, strlen($current), '0', STR_PAD_LEFT); $current = '52'; // does not need to be a string, can be number! $length = 4; // length, number of digits. $next = str_pad($current, $length, '0', STR_PAD_LEFT); They are very similar, but sprintf has more functionality, and is therefor a bit more complicated to use for new users in my opinion. Quote Link to comment https://forums.phpfreaks.com/topic/260728-adding-1-to-number/#findComment-1336319 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.