2012-01-23 50 views
0

我正在爲我的網站創建一個彩票比賽,我需要知道最簡單的比較數字的方法,以便沒有兩個人可以選擇相同的數字。它是7組數字,每個數字是介於1和30之間的數字。PHP:比較兩組數字,沒有模糊

例如,如果用戶1選擇:1,7,9,17,22,25,29,如何確保用戶2可以不會選擇那些相同的確切數字?

我正在考慮將所有7個數字都扔到一個數組中,對它進行排序以便數字按順序排列,然後將它們連接成一個字符串。然後當另一個用戶選擇他們的7個號碼時,它會做同樣的事情,然後比較這兩個號碼。有沒有更好的方法來做到這一點?

回答

6

你所描述相似的最好方式的聲音對我來說,IF您正在處理在同一個腳本所有提交 - 我會trim(implode(',',$array))數組排序,得到的字符串存儲在數組中,並調用in_array(),以確定是否價值已經存在。

然而我懷疑你實際做的是將選擇存儲在數據庫表中,並比較以後提交的對照表。在這種情況下(我冒昧地假設MySQL在這裏,但我會說這是PHP使用的最常見的引擎),您應該創建一個包含7列的表格choice_1choice_2 ... choice_7(以及任何您想要的其他列)並創建跨越全部七個choice_*列的唯一索引。這意味着當您嘗試插入重複行時,查詢將失敗。這可以讓MySQL爲你做所有的工作。

+0

對不起,應該提到MySQL。是的,計劃將它存儲在數據庫中。 6個數字可以相同,只是不是全部7個。不會在所有7列上放置一個唯一的索引不允許任何欺騙? 用戶1可以具有1,7,9,17,22,25,29,而用戶2可以具有1,7,9,17,22,25,30。只有全部7個不能相同。 – WMI

+0

是創建一個多列唯一索引允許這個。爲了插入失敗,所有7列必須與另一個條目相同。 – DaveRandom

+0

有道理。怎麼樣的命令?請問1,7,7,17​​,17,22,25,29和7,1,9,25,22,17,29(數字相同,順序不同)仍然會導致它失敗? – WMI