2012-01-23 3 views
0

내 사이트에 대한 추첨 경연 대회를 만들고 있는데 숫자를 비교하는 가장 쉬운 방법을 알아야만 두 사람이 같은 숫자를 선택할 수 없습니다. 숫자는 7 세트이고 각 숫자는 1에서 30 사이의 숫자입니다.PHP : 두 세트의 숫자와 중복 기호를 비교하십시오.

예를 들어, 사용자 1이 1, 7, 9, 17, 22, 25, 29를 선택하면 어떻게 사용자 2가 그 똑같은 번호를 선택하지 않습니까?

배열에 7 개의 숫자를 모두 던져서 번호가 정렬되도록 정렬 한 다음 하나의 문자열로 결합하는 방법에 대해 생각해 보았습니다. 그런 다음 다른 사용자가 7 개의 숫자를 선택하면 똑같은 다음 두 개의 숫자를 비교합니다. 그것을하는 더 좋은 방법이 있습니까?

답변

6

당신이 같은 스크립트의 모든 제출 다루고있는 경우, 나에게 가장 좋은 방법 같은 소리를 설명 - 나는 여부를 결정하기 위해 배열에 결과 문자열을 저장, 정렬 된 배열을 trim(implode(',',$array))in_array()를 부를 것이다 값이 이미 있습니다.

매우 내가 실제로하는 일은 선택을 데이터베이스 테이블에 저장하고 나중에이 테이블에 대해 제출 자료를 비교하는 것입니다. 이 경우 (나는 자유를 가져 와서 MySQL을 여기에 가정하지만 PHP와 함께 사용되는 가장 일반적인 엔진이라고 말할 것입니다) 7 열 choice_1, choice_2 ... choice_7 (원하는 다른 열) 및 전체 7 개의 고유 색인을 생성하십시오.choice_* 열. 즉, 중복 행을 삽입하려고하면 쿼리가 실패합니다. 이렇게하면 MySQL이 모든 작업을 수행 할 수 있습니다.

+0

죄송합니다. MySQL을 언급 했어야합니다. 예, 데이터베이스에 저장하는 계획입니다. 숫자 중 6 개가 같을 수도 있고, 모두가 같을 수도 있습니다. 7 개의 열 모두에 고유 색인을 두지 않으려 고하지 마십시오. 사용자 1은 1, 7, 9, 17, 22, 25, 29를 가질 수있는 반면 사용자 2는 1, 7, 9, 17, 22, 25, 30을 가질 수 있습니다. – WMI

+0

예 다중 열 고유 인덱스를 만들면이를 허용합니다. 삽입이 실패하려면 7 개의 모든 열이 다른 항목과 동일해야합니다. – DaveRandom

+0

의미가 있습니다. 주문은? 1, 7, 9, 17, 22, 25, 29 및 7, 1, 9, 25, 22, 17, 29 (같은 번호, 다른 순서) 여전히 실패 할 수 있습니까? – WMI

0

시도 array_diff. php.net에는 몇 가지 좋은 예가 있습니다.

관련 문제