@nsmilyk

Как в PHP выбрать случайное значение из массива?

Картина такая: есть n число значений которые случайным образом могут попасть на определенное место на странице. Порывшись в интернете я нашел код, который позволяет сделать при каждом обновлении страницы:
$frases = array(
'Выбираем один случайный элемент массива PHP',
'Как выбрать случайный элемент из массива',
'Мы все многогранны - эти грани нужно просто раскрыть',
'В каждом новом дне миллион новых возможностей',
'Начни день с улыбки!',
'Если подаришь немного добра другому, то поучишь в разы больше',
'Не дай работе заставить тебя забыть о близких людях...');

$rand_frases = array_rand($frases, 1);

echo '<h2 style="color:#00C; margin-left:300px">'. $frases[$rand_frases] .'</h2>';

Но это не совсем то что нужно мне. Необходимо сделать так чтобы это происходило именно каждые 30 минут. Каждые 30 минут на основе случайного выбора подставляется новое значение.
Как это осуществить?
  • Вопрос задан
  • 4071 просмотр
Решения вопроса 3
usdglander
@usdglander Куратор тега PHP
Yipee-ki-yay
$index = round(time() / (30 * 60));
$rand_frases = (13 * $index + 7) % count($frases);
echo '<h2 style="color:#00C; margin-left:300px">'. $frases[$rand_frases] .'</h2>';
Ответ написан
egor_nullptr
@egor_nullptr
Замените
$rand_frases = array_rand($frases, 1);
на
mt_srand(intdiv(time(), 1800));
$rand_frases = mt_rand(0, count($frases) - 1);
Ответ написан
@BisnoyZakat
В копилку вариантов ответов добавлю такие:

// вариант 1
$frases = array(
'Выбираем один случайный элемент массива PHP',
'Как выбрать случайный элемент из массива',
'Мы все многогранны - эти грани нужно просто раскрыть',
'В каждом новом дне миллион новых возможностей',
'Начни день с улыбки!',
'Если подаришь немного добра другому, то поучишь в разы больше',
'Не дай работе заставить тебя забыть о близких людях...');

$random_value = $frases[rand(0,count($array)-1)]; // это самый очевидный вариант

// вариант 2
shuffle($frases);
$random_string = $frases[0]; // со своими издержками, но на маленьких массивах код читаемый
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы