我有这个脚本可以生成随机促销代码。
}
$length = 10;
$characters = '123456789ABCDEFGHJKMNPQRSTUVWXYZ';
$charactersLength = strlen($characters);
$event = $request->event;
$prefix = $request->prefix;
$quantity = $request->quantity;
$randomString = '';
for ($x = 0; $x <= $quantity; $x++) {
for ($i = 0; $i < $length; $i++) {
$randomString .= $characters[rand(0, $charactersLength - 1)];
}
$pin = "$prefix"."$randomString";
$exists = Pin::where('pin', $pin)->first();
if(!$exists){
$new['pin'] = $pin;
$new['event'] = $event;
$new['user'] = '';
Pin::create($new);
}
$randomString = '';
}
它可以工作,但需要进行优化,因为当数量超过几千时,可能需要永久执行。
我怀疑时间值是看是否存在引脚的位。我确信必须有一种更有效的方法来确保随机字符串是唯一的。
思考?谢谢!
******正如所指出的,随机哈希生成已经在这里解决了******
也许是这个问题的第2部分......
客户已要求为随机代码选择一组字符 - &#39; 123456789ABCDEFGHJKMNPQRSTUVWXYZ&#39;。有没有办法用md5哈希来限制字符输出?
答案 0 :(得分:0)
更简单的方法:
$randomString = sha1(rand(0, 2000));