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


рецидивист
5782

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

На просторах интернета нашел код 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

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

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


siv1987

/ru/forum/617261

/ru/forum/459747

http://php.net/manual/ru/function.array-rand.php


LovelAss


<?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;


рецидивист

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

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

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


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-ть и будет идеальный говнокод.


рецидивист

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


Pi4nic

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

Pi4nic #:

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

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

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

echo $text[array_rand($text)]; 

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


Pi4nic

Спасибо! 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *