PHP使用userid创建1到9的唯一编号

时间:2012-04-10 11:36:05

标签: php random integer

为了对日历的每一行进行颜色编码,我希望能够使用字段userid创建1到9的唯一整数。我需要使用日历另一部分的颜色来显示分配给教师的学生。

请记住,userID可以是任意长度。

起初我想过使用最低有效数字,但这不适用于用户ID 01,21,22等。

然后我考虑将左侧添加到右侧,例如userID 22 = 2 + 2 = 4,但这也不起作用。

如何根据用户ID创建一个唯一的0-9整数?

1 个答案:

答案 0 :(得分:4)

如果N大于9,任何函数映射[0..N]到[1..9]都会发生冲突,因此不存在唯一映射它们的方案。

如果您之前没有看过此用户ID,那么您可以执行的操作就是通过用户ID并为其分配下一个免费号码。这是一个简单的for-loop +数组。

伪代码:

colors = array()
for userid in userids_to_color:
    if userid not in colors:
        colors[count(colors)] = userid

然后,颜色是用户标识的映射索引(=颜色编号)。如果count(colors)变得大于你的最大颜色数,你可以摆脱循环。