我使用random_int()和uniqid()生成随机字符串

时间:2018-11-17 06:12:48

标签: php

下面是我用来生成随机字符串的代码,是否有可能我会重复

<?php

echo random_int(100,999).substr(uniqid(),-4);

?>

1 个答案:

答案 0 :(得分:2)

是的,实际上您很有可能会得到一份副本。请考虑以下测试:

$arr = [];
$i = 0;
while (1) {
    echo ++$i . PHP_EOL;
    $val = random_int(100,999).substr(uniqid(),-4);
    if (in_array($val, $arr)) break;
    $arr[] = $val;
}

在第一次尝试找到重复项时,我花了不到5000次迭代。 100%保证字符串唯一的唯一方法是将其与集合中的其他字符串进行比较,如果匹配其中一个,则重试。如果您需要的是唯一的-只需使用自动增量即可。