-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
  • 541
  • 2
  • 6
  • 20

4 Answers4

7
printf('%05d', mt_rand(1, 99999));
hakre
  • 193,403
  • 52
  • 435
  • 836
Dejan Marjanović
  • 19,244
  • 7
  • 52
  • 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ć
  • 42,781
  • 13
  • 77
  • 107
1

This will do what you want

$random_number = str_pad(mt_rand(1, 99999), 5, "0", STR_PAD_LEFT);
Anigel
  • 3,435
  • 1
  • 17
  • 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
  • 8,348
  • 7
  • 49
  • 78