php uniqid md5 绝对唯一 ID
uniqid() 函数基于以微秒计的当前时间 生成 唯一 ID
uniqid(prefix,more_entropy)
prefix 可选
为 ID 规定前缀
两个脚本恰好在相同的微秒生成 ID
该参数很有用
more_entropy 可选
规定位于返回值末尾的更多的熵
如果 prefix 参数为空
则返回的字符串有 13 个字符串长
如果 more_entropy 参数设置为 true
则是 23 个字符串长
如果 more_entropy 参数设置为 true
则在返回值的末尾添加额外的熵(使用组合线形同余数生成程序)
这样可以结果的唯一性更好
以字符串的形式返回唯一标识符
由于基于系统时间
通过该函数生成的 ID 不是最佳
即使使用了第二个参数
也会重复
如需生成绝对唯一的 ID
最好的方案是结合md5函数来生成唯一ID
public static function generateNum() {//获取唯一序列号
//strtoupper转换成全大写的
$charid = strtoupper(md5(uniqid(mt_rand(), true)));
$uuid = substr($charid, 0, 8).substr($charid, 8, 4).substr($charid,12, 4).substr($charid,16, 4).substr($charid,20,12);
return $uuid;
}
<?php
$units = array();
for($i=0;$i<1000000;$i++){
$units[] = md5(uniqid(md5(microtime(true)),true));
}
$values = array_count_values($units);
$duplicates = [];
foreach($values as $k=>$v){
if($v>1){
$duplicates[$k]=$v;
}
} //生成绝对唯一的 ID
echo '<pre>';
print_r($duplicates);
echo '</pre>';
?>
尊贵的董事大人
英文标题不为空时 视为本栏投稿
需要关键字 描述 英文标题