2011-12-08 285 views
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个如果我选择生成2个组,则会被放置在同一组中,因为没有选择。我很遗憾应该试图做到这一点,我没有要求确切的代码,而是想法如何实现它。

在此先感谢!

回答

0

如果按'came_with'对'SQL'进行排序,然后'id',则知道哪些人不应该聚集在同一组中。然后你可以为这些“相同”的组创建数组(你可以将这些组合起来)。有了这些数组,你必须继续......

0

从查询结果中可以建立一个映射(或数组,因为你并不需要这些键)谁的键是“came_with”而谁的值是组属于他们......所以例如ID年代,构建地图会是什么样子:

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

从这里,你可以通过这个guestmap迭代来填充你的最终阵列。对于您的访客地图中的每个条目,请检索它,随机播放它,然后将每个条目逐个放入您的数组中。