Php 从当前日期时间生成唯一事务id

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中使用datetime生成一个唯一的事务id。它应该是17-20个字符左右的数字格式。(如:2017041914495412346
有人能帮忙吗

提前感谢。

类似的内容适合您:

    <?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个字符?