Php 从当前日期时间生成唯一事务id
我需要在PHP中使用datetime生成一个唯一的事务id。它应该是17-20个字符左右的数字格式。(如:2017041914495412346)Php 从当前日期时间生成唯一事务id,php,codeigniter,datetime,unique,Php,Codeigniter,Datetime,Unique,我需要在PHP中使用datetime生成一个唯一的事务id。它应该是17-20个字符左右的数字格式。(如:2017041914495412346) 有人能帮忙吗 提前感谢。类似的内容适合您: <?php function getGUIDnoHash(){ mt_srand((double)microtime()*10000); $charid = md5(uniqid(rand(), true)); $c =
有人能帮忙吗
提前感谢。类似的内容适合您:
<?php
function getGUIDnoHash(){
mt_srand((double)microtime()*10000);
$charid = md5(uniqid(rand(), true));
$c = unpack("C*",$charid);
$c = implode("",$c);
return substr($c,0,20);
}
echo getGUIDnoHash();
?>
既然你说的是字符,这将只包括数字。20个字符。当然,由于它仅为数字且限制为20个字符,因此它不是唯一的,因此您需要在代码中添加一个检查。您可以简单地使用uniqid()函数进行检查。您可以尝试以下方法:
substr(hash('sha256', mt_rand() . microtime()), 0, 20);
获取唯一的事务id,如下所示:
DateTime.Now.ToString("ddMMyyyyHHmmssfff") ;
您可以使用多种方法或日期-时间逻辑来实现。下面是我正在使用的17位单线解决方案
$unique = str_replace(".","",microtime(true)).rand(000,999);
嗨,西莫斯。谢谢你的建议。对不起,我提到了角色。我需要数字格式。你能用数字形式给我推荐一下吗?再次谢谢。非常感谢。就像我需要的那样。你能不能像你在这里所做的那样,将日期和时间组合成一个字符串,然后使用for循环在末尾添加一个新的整数,直到长度为20个字符?