PHP рандом

RaftKorn
На сайте с 20.03.2007
Offline
166
803

Задача в том, чтобы сделать рандомный вывод нескольких слов, и чтоб при этом они не повторялись.

Нашел такую функцию :

<?php

$input = array ("Neo", "Morpheus", "Trinity", "Cypher", "Tank");
$rand_keys = array_rand ($input, 5);
print $input[$rand_keys[0]]."\n";
print $input[$rand_keys[1]]."\n";
print $input[$rand_keys[2]]."\n";
print $input[$rand_keys[3]]."\n";
print $input[$rand_keys[4]]."\n";
?>

Локально на денвере все чудесно рандомно выводиться, а вот на сервере почему-то выстраивается в один порядок и все.

Премиум верстка и дизайн под ключ ( https://searchengines.guru/ru/forum/1045270 )
LEOnidUKG
На сайте с 25.11.2006
Offline
1726
#1


$input = array ("Neo", "Morpheus", "Trinity", "Cypher", "Tank");
$kolvo=5; //Сколько выводить
shuffle($input);
for ($i=0;$i<($kolvo-1);$i++) {echo $input[$i]."\n";}
✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/
4arger
На сайте с 17.12.2008
Offline
95
#2

а не проще:


<?php
$input = array ("Neo", "Morpheus", "Trinity", "Cypher", "Tank");
shuffle($input); // перемешиваем массив
print $input[0] . "\n";
print $input[1] . "\n";
print $input[2] . "\n";
print $input[3] . "\n";
print $input[4] . "\n";
?>
RaftKorn
На сайте с 20.03.2007
Offline
166
#3

LEOnidUKG, 4arger, большое спасибо!

S
На сайте с 25.11.2008
Offline
124
#4

Как то так еще можно


public function randomizer($min_digit, $max_digit, $count_digit)
{
// $max_digit = максимальное (до скольки)
// $min_digit = минимально (с какого числа)
// $count_digit = сколько выдать

$random_arr = array(); // массив итоговый случайных чисел
$tmp_arr=array(); // временный массив

for ($i=0; $i<$count_digit; $i++)
{
do
{
$temp=rand($min_digit, $max_digit);
}
while(isset($tmp_arr[$temp]));
$tmp_arr[$temp]=1;
$random_arr[]=$temp;
}

unset($tmp_arr);
return $random_arr;
}

Ну и вызов:

$rand_digital = $this->randomizer(1,10,3);

Тут для чисел приведено. Не сложно перевести, допустим, на ключи массива строк.

Бесплатные виджеты для сайта (https://pfka.ru). Технический анализ сайта ( https://linkonavt.ru/services/sitetechnologies ).

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий