【发布时间】:2016-03-28 07:54:25
【问题描述】:
我正在尝试在 php 中生成 6 个字符长的字母数字字符串。
我在 stackoverflow 上收到问题和答案。
Random string generate in php but not unique string
Random, unique string generate in php but didn't unique at time with 6 length of string
我可以一次生成更多 1 个 Lacs 字符串吗,
$arr = [];
$matchStr = [];
for($i=1;$i<=10000;$i++){
$saltString = "ap_";
$dynamicStr = substr(md5($saltString.$i), 26, 32);
do{
$arr[$i] = $dynamicStr;
}while(!in_array($dynamicStr,$arr));
}
我正在生成所有可能的字符串,但没有得到唯一的字符串并存储到具有唯一列索引的 mysql 表中。
我知道生成字符串的可能性是:
$str = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
随机字符串的可能性: 字符串长度:10
a-z = 26
A-Z = 26
0-9 = 10
(26+26+10)^10 = 8.3929937 x 10^17 次可能性。
那是什么时候生成字符串的解决方案吗? 在 laravel 中尝试使用以下代码
function getrandomstr() {
$length = 6;
$characters = "0123456789abcdefghijklmnopqrstuvwxyz";
$string = "";
for ($p = 0; $p < $length; $p++) {
@$string .= $characters[mt_rand(0, strlen($characters))];
}
return $string;
}
ini_set('max_execution_time', 0);
$arr = [];
$matchStr = [];
$query = [];
for($i=1;$i<=100000;$i++){
$str = getrandomstr();
do{
$query[] = [
"hashcode" => $str
];
}while(\App\Model::where('hashcode',$str)->count() == 0);
}
foreach(array_chunk($query,5000) as $a){
\App\Model::insert($a);
}
【问题讨论】:
-
“php at time”是什么意思?
标签: php string laravel laravel-5