Рандомный вывод строк из текстового файла на PHP

Р
На сайте с 07.02.2013
Offline
169
6115

Приветствую.

На просторах интернета нашел код PHP, который выводит случайные записи из текстового файла, но есть два момента, которые не могу понять как изменить:

1) выводятся записи по порядку следования друг за другом (1,2,3,4,5 или 6,7,8,9,10), а нужно, чтобы выводились не по порядку а рандомно (2,5,8,12,3)

2) в восьмой строке редактор показывает ошибку, но все работает

Сам код:

<?php

$data = file("data.txt");
$c=5;
$s="<br/>";
$out = mt_rand(1, count($data) - $c);
$sad=$out+$c;
for($i = $out; $i < $sad; $i++) {
print "$data[$i]$s";
}
?>
LEOnidUKG
На сайте с 25.11.2006
Offline
1745
#1

Объясните, подробнее. Вам нужно выводить определённое количество строк, рандомно из файла?

Не одну строку, а сколько угодно?

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
siv1987
На сайте с 02.04.2009
Offline
427
#2
LovelAss
На сайте с 05.06.2009
Offline
96
#3


<?php

$num = 5; # Кол-во строк

$data = file("data.txt");
$arr = array();
$output = "";
$s = "<br/>";

for ( $i = 0; $i < $num; $i++ ) {

do {
$rand = mt_rand(0, count($data) - 1);
} while ( in_array($rand, $arr) );

$arr[] = $rand;
$output .= $data[$rand].$s;

}

echo $output;
Р
На сайте с 07.02.2013
Offline
169
#4
LEOnidUKG:
Объясните, подробнее. Вам нужно выводить определённое количество строк, рандомно из файла?
Не одну строку, а сколько угодно?

В настоящее время мне нужно выводить шесть строк, оформленных тегами.

LEOnidUKG
На сайте с 25.11.2006
Offline
1745
#5

<?

$counstr=6;

$file=file('myfile.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);

shuffle($file);

for($i=0;$i<$counstr;$i++)

{

echo $file[$i];

}

?>

LovelAss, мало циклов вставили. Ещё штук 5-ть и будет идеальный говнокод.

Р
На сайте с 07.02.2013
Offline
169
#6

Всем огромное Спасибо, работает так как надо!

Pi4nic
На сайте с 07.07.2009
Offline
113
#7
LEOnidUKG #:

<?

$counstr=6;

$file=file('myfile.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);

shuffle($file);

for($i=0;$i<$counstr;$i++)

{

echo $file[$i];

}

?>

LovelAss, мало циклов вставили. Ещё штук 5-ть и будет идеальный говнокод.

Подскажите, при файле 25к строк, получаем одну строку, скрипт будет долго обрабатываться? 

LEOnidUKG
На сайте с 25.11.2006
Offline
1745
#8
Pi4nic #:

Подскажите, при файле 25к строк, получаем одну строку, скрипт будет долго обрабатываться? 

Для 1 строки другой код:

$text=file('banner.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES );

echo $text[array_rand($text)]; 

Этот код работает достаточно быстро до 1 млн строк, потом уже нужно построковые запросы без открытия файла.

Pi4nic
На сайте с 07.07.2009
Offline
113
#9
Спасибо! 

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