Для более странного решения, кроме очевидных файлов cookie или ответа базы данных ... Используйте хэш, основанный на дате.Это будет меняться каждые 12 часов, и каждый пациент будет получать разные списки в зависимости от их имени (работает только с 10 фруктами, как есть, но вы можете изменить концепцию для работы с другими)
<?
$fruits=array ('a','b','c','d','e','f','g','h','i','j');
$patient_name = "bob";
$choices=array_slice(array_unique(str_split(preg_replace("/[a-z]/i","",md5(date("m/d/y a").$patient_name)))),0,3);
foreach ($choices as $choice) {
echo $fruits[$choice] . "<br>";
}
ps Это шутка, вроде бы ... Хотя, это будет работать для того, что вы хотите, если вы не можете использовать куки или базу данных.
Редактировать:
ПочемуСэм Сэм ... это действительно работает!
http://www.ideone.com/HELVl Попробуйте!
@ Сэм
Что он делает?По сути, он принимает хэш md5 сегодняшней даты, а также AM / PM для текущего времени (меняется каждые 12 часов) и имя пользователя.Затем он удаляет все буквы из хэша, поэтому у вас остаются «случайные» числа.Затем он превращает числа в массив с одним номером в каждом элементе массива.Затем он разбивает массив на то, сколько вариантов вы хотите, в данном случае три.Затем с массивом этих трех чисел вы используете циклическое использование, используя их в качестве ключей для массива фруктов.
Причина, по которой вы можете получить только два (или меньше) результата, если у вас есть только шесть элементов, заключается в том, чтоВыбранные ключи больше пяти.Вот почему я сказал, что он работает только с 10 предметами.
Это сумасшедшее решение, но я думаю, что оно зашло так далеко, поэтому я объясню подробнее.Чтобы заставить его работать с большим количеством предметов, вам нужно две цифры для вашего ключа, и предпочтительно список фруктов с числом, кратным 10. Скажем, у вас есть 60 фруктов, последний ключ в вашем массиве фруктов будет 59. Таким образом, вы 'мы уже сгенерировали цифру 1 в месте от 0 до 9, теперь вам нужна цифра 10 в позиции от 0 до 5. Так что сгенерируйте еще один хеш или используйте обратный первый.Вы хотели бы preg_replace [az] [6-9], поэтому ваш массив чисел, который вы получите, будет состоять только из цифр от 0-5 (вы можете использовать больше хэшей, чтобы иметь достаточно длинную строку, чтобы убедиться, что выполучить достаточно номеров).Затем для вашего ключа вы должны сделать что-то вроде $key=(int) $key1 . $key2;
, чтобы получить две необходимые цифры.