【发布时间】:2012-02-27 14:42:10
【问题描述】:
我已经做了一个字符串生成器:
<?php
function createRandomPassword() {
$chars = "abcdefghijkmnopqrstuvwxyz023456789";
srand((double)microtime()*1000000);
$i = 0;
$pass = '' ;
while ($i <= 12) {
$num = rand() % 33;
$tmp = substr($chars, $num, 1);
$pass = $pass . $tmp;
$i++;
}
return $pass;
}
// Usage
$product_names = array ();
for ($i=0; $i < 100; $i++ )
$product_names[] = "code-" . createRandomPassword();
?>
我的问题是,我认为这可能会重复值,这非常重要,因为我将生成大约 700,000 个值。
有没有好办法保证生成的字符串不重复?
谢谢:)
【问题讨论】:
-
为什么要这么麻烦?只需使用 sha1() 或 md5()。同样,您不会在循环的每次迭代中重新播种 PRNG。你播种一次,php 会在你第一次调用 rand() 时自动为你做这件事。实际上,只有在您进行测试并且每次都想要相同的“随机”流时,您才需要手动播种。
标签: php string random generator