php 生成唯一值

1. md5(time() . mt_rand(1,1000000));

这种方法有一定的概率会出现重复

2、php内置函数uniqid()

uniqid() 函数基于以微秒计的当前时间,生成一个唯一的 ID.
w3school参考手册有一句话:"由于基于系统时间,通过该函数生成的 ID 不是最佳的。如需生成绝对唯一的 ID,请使用 md5() 函数"。

<?php 
echo uniqid(); 
echo uniqid(); 
echo uniqid(); 
?>
输出:
4bfd0e375396b
4bfd0e3753981
4bfd0e3753983

3、结合md5()函数生成一个唯一ID

<?php 
echo md5(uniqid()); 
?>
输出:dfbc5c8c6438de075da28b3c8a413fd0

4、手动去处理,官方给予的案例。

public function create_guid($namespace = '') {  
  static $guid = '';
  $uid = uniqid("", true);
  $data = $namespace;
  $data .= $_SERVER['REQUEST_TIME'];
  $data .= $_SERVER['HTTP_USER_AGENT'];
  $data .= $_SERVER['LOCAL_ADDR'];
  $data .= $_SERVER['LOCAL_PORT'];
  $data .= $_SERVER['REMOTE_ADDR'];
  $data .= $_SERVER['REMOTE_PORT'];
  $hash = strtoupper(hash('ripemd128', $uid . $guid . md5($data)));
  $guid = '{' . 
      substr($hash, 0, 8) .
      '-' .
      substr($hash, 8, 4) .
      '-' .
      substr($hash, 12, 4) .
      '-' .
      substr($hash, 16, 4) .
      '-' .
      substr($hash, 20, 12) .
      '}';
  return $guid;
 }
 返回结果类似:E2DFFFB3-571E-6CFC-4B5C-9FEDAAF2EFD7

推荐阅读更多精彩内容

  • PHP常用函数大全 usleep() 函数延迟代码实行若干微秒。 unpack() 函数从二进制字符串对数据进行解...
    上街买菜丶迷倒老太阅读 740评论 0赞 20
  • php usleep() 函数延迟代码实行若干微秒。 unpack() 函数从二进制字符串对数据进行解包。 uni...
    思梦PHP阅读 1,241评论 1赞 24
  • PHP7 已经出来1年了,PHP7.1也即将和大家见面,这么多好的特性,好的方法,为什么不使用呢,也希翼PHP越来...
    梦幻_78af阅读 1,403评论 1赞 10
  • 凛冽的寒风,流动。 天上的流云,寂静。 一个在耳边,一个在朗际。 云知道自己的归宿, 风不知它的方向。 落叶也呼应...
    道临阅读 77评论 0赞 2
  • 阳光细雨般的透过窗户,宽敞的房间十分明亮。房间的摆设十分简约,像是家具还未齐全的新房,什么都透着陌生的新意。白色的...
    林乔年阅读 274评论 0赞 2