gpt4 book ai didi

php - 独特的字母数字生成器

转载 作者:搜寻专家 更新时间:2023-10-30 21:43:01 26 4
gpt4 key购买 nike

我想为数据库中的用户提供一个唯一的字母数字 ID。我正在使用下面的代码,这会始终生成一个唯一的 ID 吗?以下是代码的更新版本:

旧的 php:

// Generate Guid 
function NewGuid() {
$s = strtoupper(md5(uniqid(rand(),true)));
$guidText =
substr($s,0,8) . '-' .
substr($s,8,4) . '-' .
substr($s,12,4). '-' .
substr($s,16,4). '-' .
substr($s,20);
return $guidText;
}
// End Generate Guid

$Guid = NewGuid();
echo $Guid;
echo "<br><br><br>";

新的 PHP:

// Generate Guid 
function NewGuid() {
$s = strtoupper(uniqid("something",true));
$guidText =
substr($s,0,8) . '-' .
substr($s,8,4) . '-' .
substr($s,12,4). '-' .
substr($s,16,4). '-' .
substr($s,20);
return $guidText;
}
// End Generate Guid

$Guid = NewGuid();
echo $Guid;
echo "<br><br><br>";

第二个(新的 php)代码会保证 100% 的唯一性吗。

最终代码:

PHP

// Generate Guid 
function NewGuid() {
$s = strtoupper(uniqid(rand(),true));
$guidText =
substr($s,0,8) . '-' .
substr($s,8,4) . '-' .
substr($s,12,4). '-' .
substr($s,16,4). '-' .
substr($s,20);
return $guidText;
}
// End Generate Guid

$Guid = NewGuid();
echo $Guid;

$alphabet = '123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ';

function base_encode($num, $alphabet) {
$base_count = strlen($alphabet);
$encoded = '';

while ($num >= $base_count) {

$div = $num/$base_count;
$mod = ($num-($base_count*intval($div)));
$encoded = $alphabet[$mod] . $encoded;
$num = intval($div);
}

if ($num) $encoded = $alphabet[$num] . $encoded;
return $encoded;
}


function base_decode($num, $alphabet) {
$decoded = 0;
$multi = 1;

while (strlen($num) > 0) {
$digit = $num[strlen($num)-1];
$decoded += $multi * strpos($alphabet, $digit);
$multi = $multi * strlen($alphabet);
$num = substr($num, 0, -1);
}

return $decoded;
}

echo base_encode($Guid, $alphabet);

}

因此,为了获得更强的唯一性,我使用 $Guid 作为 key 生成器。应该没问题吧?

最佳答案

如果你希望id是唯一的,你应该generate a GUID using uniqid .

您的方法根本不能保证唯一性。并且可能会造成碰撞。

关于php - 独特的字母数字生成器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4514168/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com