Создав соответствующее семя, вы можете сделать это, не сохраняя результат.
Вы хотите получить ISO-8601 номер недели и номер недели. Вы можете сгенерировать это с помощью date('oW')
. Сегодня (и до следующего понедельника), который вернет 201638
.
Значение из W
меняется каждый понедельник и значение от o
меняется каждый год если текущего дня W
не принадлежит к предыдущему или следующему году - в этом случае используется в том же году. (Другими словами, год/неделю комбо никогда не будет меняться в середине недели из-за нового года.)
После того, как вы есть, что комбо использовать его для семян ваш генератор случайных чисел:
mt_srand((int)date('oW'));
Затем потяните свое случайное число между вашими лимитами. С фиксированной семени это будет производить такое же значение для каждого из ваших посетителей:
$number = mt_rand(1000, 1999);
Затем отформатировать его, чтобы добавить разделитель тысяч и вывод:
echo number_format($number);
Все вместе, пропуская промежуточная переменная:
mt_srand((int)date('oW'));
echo number_format(mt_rand(1000, 1999));
Сегодня этот выход 1,331
.
Нет необходимости хранить сгенерированное число в любом месте, так как это надежно восстанавливает одинаковое количество для каждого посетителя, каждый день до следующего понедельника - в этот момент вы получаете новое семя и, следовательно, новое случайное число (до следующего понедельника ., как и так далее)
Для получения дополнительной информации о функциях, используемых см PHP manual:
насчет хранения, что и последнее сгенерированное дату в базе данных? Затем проверьте время сервера и посмотрите, находится ли он в понедельник, и последняя сгенерированная дата не является текущей датой для повторного создания номера. – SparK
Вы делаете жизнь более сложной, чем она должна быть '$ new_rand = mt_rand (1000, 1999);' Теперь вам нужно где-то ее хранить! И затем выясните, как восстановить его в понедельник – RiggsFolly
Это может помочь: 'echo date ('W N');' показывает номер недели и количество дней в неделю. –