Как в PHP выдернуть рандомно уникальные строки из текстового файла?
Имеем текстовой фал с N-м количеством строк текста (строки необязательно должны быть предложениями, и необязательно со знаками препинания).
Допустим нужно выдернуть из этого файла 150 случайных строк и вывести их.
На одном из форумов увидел вот такой код (который вроде как должен как раз реализовать такую идею, однако, я попробовал - и каждый раз скрипт выводит одну-две строки текста (номер строки : текст), а остальные строки только номера строк без текста...). Помогите найти ошибку. Заранее спасибо.
-------
КОД:
<?php
# Подсчитываем кол-во строк в файле.
$f = fopen('semantic.txt', "r");
<?php
# Подсчитываем кол-во строк в файле.
function FileGetCount( $path ) {
if ( $f = fopen( $path , "r" ) ) {
$counter = 0;
while (fgets($f)) { $counter++; }
fclose($f);
return $counter;
}
return false;
}
function GetRandomArray( $num , $lineCount ) {
if ( $num > $lineCount ) {
$num = $lineCount;
}
мда, пэхапешники конечно славятся своей альтернативной одаренностью, но этот безымянный автор с какого-то форума, конечно превзошел их всех
150 раз читать заново один и тот же файл, чтобы прочитать из него 150 строчек - это надо настоящий талант иметь. к говнокоду
Я попробовал ваш код в том виде, в котором вы его указали. Файл текста указал в абсолютном виде. Не работает - ничего не отображается.
Что я сделал не так?
не включили вывод ошибок? В файле меньше 150 строк? Неверный путь к файлу? Можно гадать до бесконечности. Учитесь определять ошибки и использовать дебаг, хотя бы через var_dump().
ЗЫ: Мой код еще раз совершенно не обязательно дублировать в комментарии, его видно в моем ответе весьма отлично.
Бездарно, г-н ThunderCat!
А почему вы сами не проверяете код, когда даете ответ?! (риторический вопрос).
В вашем коде две ошибки.
1. На этапе проверки количества строк. В вашем примере он при любом раскладе выводит False (для текстового файла).
2. На этапе вывода. Так текстовые строки не выводятся!