我正在开发一个PHP / MySQL应用程序,我有一个非常简单的表,如下所示:
id | name | came_with
1 John null
2 Jane 1
3 Dean null
它有大约50条记录,但主要的想法是存储注册活动的人,如果他们带来了客人,他们的名字也会被id
邀请他们加入{{1}字段,很简单。
我必须将这些名称混淆并根据每组中我想要的人数分成X个组,因为我可以将每个记录存储在一个数组中,使用came_with
来随机化顺序和使用shuffle
根据人数生成较小的数组。
问题在于我不能让那些聚集在同一组的人,所以在这个例子中John和Jane不能在同一个组中,但是对于一个带2个以上的人来说没关系由于没有选择,如果我选择生成2个组,则放在同一组中。我在尝试这样做的逻辑应该是非常迷失的,我不是要求确切的代码,而是要求如何实现它。
提前致谢!
答案 0 :(得分:0)
如果您通过'came_with'然后'id'对SQL进行排序,您就知道哪些人不应该聚集在同一个组中。然后,您可以为这些“相同”组创建数组(您可以随机播放这些数组)。有了这些阵列,你必须继续......
答案 1 :(得分:0)
从查询结果中你可以构建一个地图(或数组,因为你真的不需要密钥)谁的密钥是“came_with”,谁的值是属于他们的id的组......所以例如,构造的地图看起来像:
guestmap[0] => [1, 3] // John and Dean came by themselves
guestmap[1] => [2] // Jane came with John
从此处开始,您可以遍历此 guestmap 以填充最终的组数组。对于 guestmap 中的每个条目,检索它,随机播放,然后将每个条目逐个放入组数组中。