String Padding, что означают цифры? - PullRequest
1 голос
/ 22 апреля 2011

У меня есть этот код,

$salt = str_pad(rand(1, 9999999), 7, '0', STR_PAD_LEFT);

Означает ли это, что число будет случайным между 1, 9999999.

Это будет не менее 7 символов.

Если ранд не состоит из 7 цифр, то длинные нули будут добавляться справа, пока он не составит в общей сложности семь цифр?

Если это правильно, я не уверен, как я могу изменить это так вместовставляя только нули, получая в общей сложности 7, но генерируя случайное число от 1 до 9, и добавляя их к общему числу 7.

Ответы [ 3 ]

2 голосов
/ 22 апреля 2011

Да, я верю, что ваша интерпретация верна.

Я бы не стал менять его; произвольные цифры заполнения не сделают ваш номер более случайным. На самом деле, во всяком случае, вы бы исказили распределение, делая меньшие числа гораздо менее вероятными.

1 голос
/ 22 апреля 2011

Ваше понимание в основном верно.Это даст вам случайное число от 1 до 9999999, а затем даст вам строковое представление с добавлением нуля слева.

Если вы просто хотите получить случайное число из 7 цифр, используйте:

rand(1000000,9999999)

Если вы хотите, чтобы конкретная ненулевая цифра дополняла ее (все цифры одинаковы), случайным образом сгенерируйте одну из них с rand(1,9) и используйте ее в следующих строках:

$salt = str_pad(rand(1, 9999999), 7, <your random character here>, STR_PAD_LEFT);
1 голос
/ 22 апреля 2011
$salt = str_pad(rand(1, 9999999), 7, rand(1, 9), STR_PAD_LEFT);

Вместо передачи 0 на пэд, просто передайте случайное число от 1 до 9.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...