【发布时间】:2012-08-28 17:10:35
【问题描述】:
我所拥有的是一个带有元素的表格。每个元素都有一个唯一的id和一个唯一的short id,称为short。它看起来例如像下面这样:
id=>short
1 => 1
9 => 9
10=> a
37=> B
等等。短 id 是通过 php 函数生成的。
我现在想做的是让用户设置自己的自定义短。 假设第 38 位用户希望他的短片是“foobar”。简单的解决方案是:
10=> a
37=> B
38=> foobar
39=> D
但是那样我会失去 C 。如果许多用户决定使用自定义的短 id,最终会丢失许多短 id。
所以每个自定义的short都会导致id“太靠前”有什么办法可以解决这个问题吗?在 mysql 或 php 中。
完美的是:
10=> a
37=> B
38=> foobar
39=> C
40=> FUBAR
41=> D
更新:(可能的三排方法)
“使用”行仅在生成短 ID 而不是定制时增加。这样,可以始终使用“已使用”行生成短 ID。例如:
id | short | used
10 | a | 10
37 | B | 37
38 | foobar | 37
39 | C | 38
40 | FUBAR | 38
41 | D | 39
【问题讨论】:
-
我不明白这个问题。你会丢失旧的短 ID ......然后呢?
-
@arxanas:我的阅读是 OP 希望重用已使用并已发布的短 ID;如果是这样,答案显然在于生成如此短 ID 的代码,而问题中没有给出。需要更多细节。
-
好吧,我认为接受不能解决问题的答案是相当愚蠢的。我有一个不被接受的应得的,现在已修复。当然,每次尝试我都会给出正面评价。
-
缩短我正在使用的ID //来自php.net/manual/en/function.base-convert.php,基数为
0123456789和0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_。是的,我希望有一个可以回收未使用的 ID 的解决方案。 -
@Wurstbro:这是一个公平的观点。如果您过去的问题已经解决,但没有通过任何给出的答案,您可以发布(然后接受)您自己的解决方案。如果这些问题尚未解决,您可以尝试编辑问题以提供更多信息,直到有解决方案。或者,您可以删除社区无法找到解决方案的问题。本网站的目的不是(仅)回答发帖者的问题,而是提供适用于更广泛受众的问题解决方案记录。