php代码格式化中重复的id怎么处理

页面导航:
→ 正文内容 PHP生成不重复标识符
PHP生成不重复标识符的方法
这篇文章主要介绍了PHP生成不重复标识符的方法,涉及时间函数time的md5转换,uniqid()函数及GUID的应用,非常具有实用价值,需要的朋友可以参考下
本文实例讲述了PHP生成不重复标识符的方法。分享给大家供大家参考。具体实现方法如下:
生成唯一不重复的标识我们主要是根据当前的一个时间time然后再转换在md5值,这样几乎是可以保证标签的唯一性,下面整理了一些关于PHP生成不重复标识符程序代码,感兴趣的朋友可以来看一下
PHP倒是自带了生成唯一id的函数:uniqid() ,它是基于当前时间微秒数的,用法如下:
代码如下:echo uniqid(); //13位的字符串
echo uniqid("php_"); //当然你可以加上前缀
echo uniqid("php_", TRUE); //如果第二个参数more_entropy为true则生成23位字符串
但是它生成的标识有可能不是唯一的,所以很多人会:
代码如下:&?php
&&& //这是第一种简单的方法,当然用sha1()函数也可以。
&&& echo md5(uniqid());
&&& //第二种,利用时间戳的方法
&&& echo md5(time() . mt_rand(1,1000000));
代码如下:&?
//生成唯一标识符
//sha1()函数, "安全散列算法(SHA1)"
function create_unique() {
&&& $data = $_SERVER['HTTP_USER_AGENT'] . $_SERVER['REMOTE_ADDR']
&&&& .time() . rand();
&&& return sha1($data);
&&& //return md5(time().$data);
&&& //return $
例子如下:
代码如下:&?php
$newhash = create_unique();
我看到很多人使用 md5() 函数,即使它并不完全意味着这个目的:
代码如下:// generate unique string
echo md5(time() . mt_rand(1,1000000));
There is actually a PHP function named uniqid() that is meant to be used for this.
// generate unique string
echo uniqid();
4bd67c947233e
// generate another unique string
echo uniqid();
4bd67c9472340
你可能会注意到,尽管字符串是唯一的,前几个字符却是类似的,这是因为生成的字符串与服务器时间相关。
但实际上也存在友好的一方面,由于每个新生成的 ID 会按字母顺序排列,这样排序就变得很简单。
为了减少重复的概率,你可以传递一个前缀,或第二个参数来增加:
代码如下:// with prefix
echo uniqid('foo_');
foo_4bd67d6cd8b8f
// with more entropy
echo uniqid('',true);
4bd67d6cd8b926.
echo uniqid('bar_',true);
bar_4bd67da367b650.
这个函数将产生比 md5() 更短的字符串,节省一些空间。
php生成全球唯一标识符(GUID)的方法
GUID在空间上和时间上具有唯一性,保证同一时间不同地方产生的数字不同。
世界上的任何两台计算机都不会生成重复的 GUID 值。
需要GUID的时候,可以完全由算法自动生成,不需要一个权威机构来管理。
GUID的长度固定,并且相对而言较短小,非常适合于排序、标识和存储。
代码如下:&?php
//php生成GUID
function getGuid() {
&$charid = strtoupper(md5(uniqid(mt_rand(), true)));
&$hyphen = chr(45);// "-"
&$uuid = substr($charid, 0, 8).$hyphen
&.substr($charid, 8, 4).$hyphen
&.substr($charid,12, 4).$hyphen
&.substr($charid,16, 4).$hyphen
&.substr($charid,20,12);
希望本文所述对大家的php程序设计有所帮助。
您可能感兴趣的文章:
上一篇:下一篇:
最 近 更 新
热 点 排 行
12345678910php代码中重复的id怎么处理_百度知道
php代码中重复的id怎么处理
lt,所以我要foreach 出值
if(,我把里面的斜杠去掉了
$now = unserialize($now_content);/]);\/(5).插入到数组
$content= serialize($content_id);$content_id = array(), $getcontent).判定cookie是否存在;content_id&#39, $id).里面很多元素;3; /
$content_id[] = $w, & /;(10);;; //content_id&\;/(7)?
还有能删除cookie中的一个id吗(不是删除全部id我想删除的一个id)。?大家帮忙下;(8);&#47。.您可以查看下/
$kaskas = array_merge($id, &])) /&quot!in_array($w;]?&;\2;&#47,第一次不存在(如果存在的话)
$now_content = str_replace(&&#47, 有办法删除一个吗。,&(取值).把数组实例化成字符串
setcookie(&&$w) { /$id = rtrim($id);&quot.把cookie 中的serialize生成的字符串反实例化成数组
foreach($now as $n=&gt, time()+3600*24).创建一个数组
$content_id = $
$kaskas);/1;(4).插入到cookie
$content= serialize($content_id);&#47,$content_id)) /content_id']));id&#39, $_COOKIE[&#39.把数组实例化成字符串
setcookie(&//;&#47,如果存在的化我就不插入到数组里面去;;; / /&#47,$content.对接受到的ID插入到数组中去
if(isset($_COOKIE['\/&quot,$content.生成cookie
$getcontent = unserialize(str_replace(&5, $_COOKIE['&#47, time()+3600*24);;content_id'$id = explode(&content_id&quot.判定这个值是否存在;4;// / /(9);(6),此时如果unserialize的话出问题的?php$id = $_GET['cookie获取id和当前id重复出来了
提问者采纳
我觉得你在创建一个新id前就应该检查此id曾经是否被创建过,如果创建过就不再创建,而不是都创建好了才去检查是否有重复然后删除
其他类似问题
为您推荐:
php的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁distinct去掉mysql中重复值
distinct去掉mysql中重复值
      转自:在使用mysql时,有时需要查询出某个字段不重复的记录,虽然mysql提供有distinct这个关键字来过滤掉多余的重复记录只保留一条,但往往只用它来返回不重复记录的条数,而不是用它来返回不重记录的所有值。其原因是distinct只能返回它的目标字段,而无法返回其它字段,这个问题让我困扰了很久,用distinct不能解决的话,我只有用二重循环查询来解决,而这样对于一个数据量非常大的站来说,无疑是会直接影响到效率的。所以我花了很多时间来研究这个问题,网上也查不到解决方案,期间把容容拉来帮忙,结果是我们两人都郁闷了。。。。。。。。。  下面先来看看例子:  table& id&name& 1&a& 2&b& 3&c& 4&c& 5&b  库结构大概这样,这只是一个简单的例子,实际情况会复杂得多。  比如我想用一条语句查询得到name不重复的所有数据,那就必须使用distinct去掉多余的重复记录。  select distinct name from table得到的结果是:  name& a& b& c  好像达到效果了,可是,我想要得到的是id值呢?改一下查询语句吧:  select distinct name, id from table  结果会是:  id&name& 1&a& 2&b& 3&c& 4&c& 5&b  distinct怎么没起作用?作用是起了的,不过他同时作用了两个字段,也就是必须得id与name都相同的才会被排除。。。。。。。  我们再改改查询语句:  select id, distinct name from table  很遗憾,除了错误信息你什么也得不到,distinct必须放在开头。难到不能把distinct放到where条件里?能,照样报错。。。。。。。  很麻烦吧?确实,费尽心思都没能解决这个问题。没办法,继续找人问。  拉住公司里一JAVA程序员,他给我演示了oracle里使用distinct之后,也没找到mysql里的解决方案,最后下班之前他建议我试试group by。  试了半天,也不行,最后在mysql手册里找到一个用法,用group_concat(distinct name)配合group by name实现了我所需要的功能,兴奋,天佑我也,赶快试试。  报错。。。。。。。。。。。。郁闷。。。。。。。连mysql手册也跟我过不去,先给了我希望,然后又把我推向失望,好狠哪。。。。  再仔细一查,group_concat函数是4.1支持,晕,我4.0的。没办法,升级,升完级一试,成功。。。。。。  终于搞定了,不过这样一来,又必须要求客户也升级了。  突然灵机一闪,既然可以使用group_concat函数,那其它函数能行吗?  赶紧用count函数一试,成功,我。。。。。。。想哭啊,费了这么多工夫。。。。。。。。原来就这么简单。。。。。。  现在将完整语句放出:  select *, count(distinct name) from table group by name  结果:  id&name&count(distinct name)& 1&a&1& 2&b&1& 3&c&1  最后一项是多余的,不用管就行了,目的达到。。。。。  唉,原来mysql这么笨,轻轻一下就把他骗过去了,郁闷也就我吧(对了,还有容容那家伙),现在拿出来希望大家不要被这问题折腾。  哦,对,再顺便说一句,group by 必须放在 order by 和 limit之前,不然会报错,差不多了,发给容容放网站上去,我继续忙碌。。。。。。  -----------------------------------------------------------------------------------------  更郁闷的事情发生了,在准备提交时容容发现,有更简单的解决方法。。。。。。  select id, name from table group by name  看来对mysql的了解还是太肤浅了,不怕被笑话,发出来让大家别犯同样的错误。。。。。。
&&&主编推荐
H3C认证Java认证Oracle认证
基础英语软考英语项目管理英语职场英语
.NETPowerBuilderWeb开发游戏开发Perl
二级模拟试题一级模拟试题一级考试经验四级考试资料
港口与航道工程建设工程法规及相关知识建设工程经济考试大纲矿业工程市政公用工程通信与广电工程
操作系统汇编语言计算机系统结构人工智能数据库系统微机与接口
软件测试软件外包系统分析与建模敏捷开发
法律法规历年试题软考英语网络管理员系统架构设计师信息系统监理师
高级通信工程师考试大纲设备环境综合能力
路由技术网络存储无线网络网络设备
CPMP考试prince2认证项目范围管理项目配置管理项目管理案例项目经理项目干系人管理
Powerpoint教程WPS教程
电子政务客户关系管理首席信息官办公自动化大数据
职称考试题目
就业指导签约违约职业测评
招生信息考研政治
网络安全安全设置工具使用手机安全
3DMax教程Flash教程CorelDraw教程Director教程
Dreamwaver教程HTML教程网站策划网站运营Frontpage教程
生物识别传感器物联网传输层物联网前沿技术物联网案例分析
互联网电信IT业界IT生活
Java核心技术J2ME教程
Linux系统管理Linux编程Linux安全AIX教程
Windows系统管理Windows教程Windows网络管理Windows故障
组织运营财务资本
视频播放文件压缩杀毒软件输入法微博
数据库开发Sybase数据库Informix数据库
&&&&&&&&&&&&&&&
希赛网 版权所有 & &&&&湘教QS2-164&&增值电信业务经营许可证湘B2-页面导航:
→ 正文内容 php 生成唯一id
php 生成唯一id的几种解决方法
本篇文章介绍了“php 生成唯一id的几种解决方法”,需要的朋友可以参考一下
网上查了下,有很多的方法
1、md5(time() . mt_rand(1,1000000));
  这种方法有一定的概率会出现重复
2、php内置函数uniqid()
  uniqid() 函数基于以微秒计的当前时间,生成一个唯一的 ID.
  w3school参考手册有一句话:"由于基于系统时间,通过该函数生成的 ID 不是最佳的。如需生成绝对唯一的 ID,请使用 md5() 函数"。
  下面方法返回结果类似:5DDB650F--A100-501EF1348872
代码如下:function uuid() {&&& if (function_exists ( 'com_create_guid' )) {&&&&&&& return com_create_guid ();&&& } else {&&&&&&& mt_srand ( ( double ) microtime () * 10000 ); //optional for php 4.2.0 and up.随便数播种,4.2.0以后不需要了。&&&&&&& $charid = strtoupper ( md5 ( uniqid ( rand (), true ) ) ); //根据当前时间(微秒计)生成唯一id.&&&&&&& $hyphen = chr ( 45 ); // "-"&&&&&&& $uuid = '' . //chr(123)// "{"substr ( $charid, 0, 8 ) . $hyphen . substr ( $charid, 8, 4 ) . $hyphen . substr ( $charid, 12, 4 ) . $hyphen . substr ( $charid, 16, 4 ) . $hyphen . substr ( $charid, 20, 12 );&&&&&&& //.chr(125);// "}"&&&&&&& return $&&& }}com_create_guid()是php自带的生成唯一id方法,php5之后貌似已经没有了。3、官方uniqid()参考手册有用户提供的方法,结果类似:{E2DFFFB3-571E-6CFC-4B5C-9FEDAAF2EFD7}
代码如下:public function create_guid($namespace = '') {&&&& &&& static $guid = '';&&& $uid = uniqid("", true);&&& $data = $&&& $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 $& }
您可能感兴趣的文章:
上一篇:下一篇:
最 近 更 新
热 点 排 行
12345678910编程开发子分类}

我要回帖

更多关于 php二维码生成代码 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信