我正在开发一个类似调查的应用程序。对于选择题,我想将一个项目的组合存储在一个数字中,以将其存储在一行中。是否有算法将数字组合转换为一个数字?
因此,对于问题的数据库结构是这样的:
id type text item_id
-- --------------- --------------------------- -------
1 multiple_choice which one would you choose? 42
1 multiple_choice which one would you choose? 43
1 multiple_choice which one would you choose? 46
这是3个选择的问题时,选择从另一个表项目被称为是id的42,43,46
所以我希望把这个组合成一个数来实现这一点:
id type text items
-- --------------- --------------------------- -------
1 multiple_choice which one would you choose? x*
- X应该是一个数字,表示它是从数字衍生42,43,46
所以数学会是这样的
f({42,43,46}) = x and f^-1(x)={42,43,46}
一种方法来解决这个可能是使用素数作为项目ID的。所以他们的乘法是独一无二的,但有没有办法与所有数字做到这一点?
在此先感谢。
是你的ID有最大值?在这种情况下,你可以连接它们,例如它是99: 42 + 43 * 100 + 46 * 10000 ... 为什么一个数字?你为什么不做一个字符串?逗号分隔例如? – charly 2013-04-21 16:12:41
@charly将它们存储在逗号分隔的字符串中是个不错的主意。但是我早些时候尝试过,当我想修改一个集合中的一个成员时(即将问题的添加/删除选项),它真的成为PHP头疼的问题。所以我真的更喜欢将这个集合保存为尽可能紧凑。即使使用'implode(,)'和'explode(,)'' – void 2013-04-21 16:14:44
? – charly 2013-04-21 16:15:59