如何根据条件拆分数组?

时间:2011-12-08 06:01:19

标签: php mysql arrays shuffle chunks

我正在开发一个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个组,则放在同一组中。我在尝试这样做的逻辑应该是非常迷失的,我不是要求确切的代码,而是要求如何实现它。

提前致谢!

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 中的每个条目,检索它,随机播放,然后将每个条目逐个放入数组中。

相关问题