-1

hi I'm generating an random integers using mt_rand(1, 99999) and if its not equal to 5 digits it will add 0 on the front of the integers.

here's my first try:

$random_number = mt_rand(1, 99999);
$ran_len = strlen($random_number);

while ($ran_len != 5 ) {
$add_ran_num = str_pad($random_number, 1, "0", STR_PAD_LEFT);
}

echo $add_ran_num;
KevDev
  • 558
  • 2
  • 6
  • 19

4 Answers4

7
printf('%05d', mt_rand(1, 99999));
hakre
  • 184,866
  • 48
  • 414
  • 792
Dejan Marjanović
  • 19,004
  • 7
  • 50
  • 66
4

You don't need strlen nor while loop for that :

$random_number = mt_rand(1, 99999);
$add_ran_num = str_pad($random_number, 5, "0", STR_PAD_LEFT);
echo $add_ran_num;
Glavić
  • 41,315
  • 13
  • 72
  • 105
1

This will do what you want

$random_number = str_pad(mt_rand(1, 99999), 5, "0", STR_PAD_LEFT);
Anigel
  • 3,365
  • 1
  • 16
  • 23
0

You don't update the value of $ran_len:

$random_number = mt_rand(1, 99999);
$ran_len = strlen($random_number);

while ($ran_len != 5 ) {    
    $add_ran_num = str_pad($random_number, 1, "0", STR_PAD_LEFT);
    $ran_len = strlen($random_number);//<---
}

echo $add_ran_num;

Thus the loop is infinite.

Andrius Naruševičius
  • 7,983
  • 6
  • 48
  • 74