PHP: сравнить два набора чисел, без дупликов - PullRequest
0 голосов
/ 23 января 2012

Я создаю лотерею для своего сайта, и мне нужно знать самый простой способ сравнения чисел, чтобы два человека не могли выбрать одинаковые числа.Это 7 наборов чисел, каждое число является числом от 1 до 30.

Например, если пользователь 1 выбирает: 1, 7, 9, 17, 22, 25, 29, как я могу убедиться, что пользователь2 не можете выбрать одно и то же точное число?

Я думал о том, чтобы бросить все 7 чисел в массив, отсортировать их по порядку, а затем объединить их в одну строку.Затем, когда другой пользователь выбирает свои 7 чисел, он делает то же самое, затем сравнивает их.Есть ли лучший способ сделать это?

Ответы [ 2 ]

6 голосов
/ 23 января 2012

То, что вы описываете, звучит как лучший способ для меня, ЕСЛИ вы имеете дело со всеми представлениями в одном и том же сценарии - я бы trim(implode(',',$array)) отсортировал массив, сохранил полученную строку в массиве и вызвал быin_array(), чтобы определить, существует ли это значение.

HOWEVER Я подозреваю, что на самом деле вы сохраняете выборы в таблице базы данных и сравниваете более поздние представления с этой таблицей.В этом случае (я беру на себя смелость и предполагаю, что MySQL здесь, но я бы сказал, что это самый распространенный механизм, используемый в PHP), вы должны создать таблицу с 7 столбцами choice_1, choice_2 ... choice_7 (вдольс любыми другими столбцами, которые вы хотите) и создайте уникальный индекс для всех семи choice_* столбцов.Это означает, что при попытке вставить повторяющуюся строку запрос не будет выполнен.Это позволяет MySQL делать всю работу за вас.

0 голосов
/ 23 января 2012

Попробуйте array_diff . На php.net есть несколько действительно хороших примеров.

...