2011-12-08 657 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迭代來填充你的最終陣列。對於您的訪客地圖中的每個條目,請檢索它,隨機播放它,然後將每個條目逐個放入您的數組中。