PHP:根据ID生成唯一的随机int数

时间:2019-01-22 01:37:57

标签: php

我目前正在寻找一种很好的方法来为PHP中的27位数字生成SEPA交易(端到端参考)的唯一随机数。我的要求是:

  • 必须唯一
  • 只有int值,没有字母
  • 27位数字的长度
  • 使用用户ID和时间来使ID唯一

我在这里尝试过此解决方案,但这只能给我一个包含字母和数字的字符串:

md5( uniqid( mt_rand(), true ) );

有人有轻量级的解决方案或想法吗?

2 个答案:

答案 0 :(得分:3)

echo $bira = date('YmdHis').rand(1000000000000,9000000000000);
echo "<br/>";
echo strlen($bira);

在前面添加时间戳,因此时间戳始终是唯一的。

echo $bira = time().rand(10000000000000000,90000000000000000);

输出:

  

201901220142532979656312614

     

27

答案 1 :(得分:1)

如何?

$array = [];
$numberOfTransactions = 1;

while (count($array) < $numberOfTransactions) {
    $rand = mt_rand(100000000000000000000000000, 999999999999999999999999999);
    $array[$rand] = $rand;
}

print_r($array);

关联数组键是唯一的,因此不会有任何重复。