0

我正在开发一个 PHP/MySQL 应用程序,我有一个非常简单的表,如下所示:

id | name | came_with
1    John    null
2    Jane    1
3    Dean    null

它有大约 50 条记录,但主要思想是它存储注册活动的人,如果他们带来客人,他们的名字也会与现场id邀请他们的人一起存储came_with,非常简单。

我必须将这些名称打乱,并根据我想要在每个组中有多少人将它们分成 X 个组,这将非常容易,因为我可以将每条记录存储在一个数组中,用于shuffle随机化顺序和array_chunk用于生成较小的阵列取决于人数。

问题是我不能让一起来的人在同一个小组,所以在这个例子中,约翰和简不能在同一个小组,但是一个有两个人一起来的人可以被安排在如果我选择生成 2 个组,则为同一组,因为别无选择。我非常迷茫尝试这样做的逻辑应该是什么,我不是要确切的代码,而是要如何完成它的想法。

提前致谢!

4

2 回答 2

0

从查询结果中,您可以构建一个映射(或数组,因为您并不真正需要键)谁的键是“came_with”,谁的值是属于它们的 id 组......例如,构造地图看起来像:

guestmap[0] => [1, 3] // John and Dean came by themselves
guestmap[1] => [2] // Jane came with John

从这里,您可以遍历此guestmap以填充您的最终数组。对于您的guestmap中的每个条目,检索它,对其进行随机播放,然后将每个条目一个一个地放入您的数组中。

于 2011-12-08T08:26:24.933 回答
0

如果您按“came_with”和“id”对 SQL 进行排序,您就知道哪些人不应该在同一个组中聚集。然后您可以为这些“相同”组创建数组(您可以随机播放这些组)。有了这些数组,你必须继续......

于 2011-12-08T07:57:29.490 回答