如何用PHP编写函数来生成字符串
a001,a002,…A9999,。。。AA0001,AA9999,。。。AZ0001,AZ9999,。。。
如果可以用mysql编写函数,请告诉我。
我要定义数据库中记录的唯一ID,
所以我需要生成唯一的ID。
现在我正在使用表上的自动增量。现在是8位数,所以我需要用4到6位数最小化它。我的一个朋友说用这个公式,这样你就可以最小化你唯一身份证的长度。
A9999 = 9,999 Records
AA0001 to AZ9999 = 259,974 Records
AA0001 to ZZ9999 = 175,742,424 Records
或者如果你有其他想法,请给我。
提前谢谢。
我的问题解决了
多亏了你的建议和想法,有了@thecoshman,我实际上解决了我的问题。
function encodeItemBarcode($number) {
$number = base_convert($number, 10, 36);
$number = strtoupper($number);
return $number;
}
function decodeItemBarcode($number) {
$number = base_convert($number, 36, 10);
$number = strtoupper($number);
return $number;
}
输出:
999999999991 Encrypted as : CRE66I9J - Decrypted as : 999999999991
999999999992 Encrypted as : CRE66I9K - Decrypted as : 999999999992
999999999993 Encrypted as : CRE66I9L - Decrypted as : 999999999993
999999999994 Encrypted as : CRE66I9M - Decrypted as : 999999999994
999999999995 Encrypted as : CRE66I9N - Decrypted as : 999999999995
999999999996 Encrypted as : CRE66I9O - Decrypted as : 999999999996
999999999997 Encrypted as : CRE66I9P - Decrypted as : 999999999997
999999999998 Encrypted as : CRE66I9Q - Decrypted as : 999999999998
999999999999 Encrypted as : CRE66I9R - Decrypted as : 999999999999
最后,我将12位(99999999991)最小化为8个字符(CRE66I9J)。我不会把它存储在数据库中,我只会在前端使用它。
再次感谢大家。
最佳答案
我想你可以把十进制的ID号显示为十六进制值,所以如果你有3397的值,它会以十六进制形式显示为D45。使用这个系统,最大6个十六进制数字,FFFFF等于16777215的十进制值。
这将是使用十六进制和只显示6位数字的限制。
如果你需要能够“代表”更大的数字,我可以提供一个解决方案。虽然我能想到的最简单的方法是使用基数36,即0到1是0到9,然后继续,像hex,A到Z是10到35。这样Z+1=A0或36。我需要一点时间来考虑这个问题,所以如果这不是你所需要的,我不想费心,只要通过评论告诉我就行了
关于php - 如何编写函数来生成字符串,如A0001,A0002,.. A9999,…AA0001,AA9999,…AZ0001,AZ9999,,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9805664/