重複の可能性:
PHP: ランダムで一意の英数字文字列を生成する方法は?
この式は衝突を引き起こしますか?
substr(md5(uniqid(rand()))),0,6)
数字のみ (つまり 7 桁) の一意の ID を生成するにはどうすればよいですか?
重複の可能性:
PHP: ランダムで一意の英数字文字列を生成する方法は?
この式は衝突を引き起こしますか?
substr(md5(uniqid(rand()))),0,6)
数字のみ (つまり 7 桁) の一意の ID を生成するにはどうすればよいですか?
uniqidは13文字の文字列を生成しますが、衝突のリスクなしに7文字または7桁に減らすにはどうすればよいですか?
の出力を新しい表現に転置する際の衝突を意味する限りuniqid
、次のように行うことができます。
uniqid
13文字の文字列を返します。各文字はまたはである可能性がある0-9
ためa-f
、基本的に1桁の16進数、0〜15の10進数です。例:
$unique = uniqid(); # 13 characters
$sevenPairs = array_map('hexdec', str_split($unique, 2));
printf("Unique ID: %s\nSeven Pairs (digits): %s\n"
, $unique, implode(', ', $sevenPairs));
出力:
Unique ID: 4f8ace1eb736a
Seven Pairs (digits): 79, 138, 206, 30, 183, 54, 10
プレフィックス部分を使用する場合(質問ではrand
)、返される文字列の長さがuniqid
13より大きくなる可能性があることに注意してください。