[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Ошибка Notice: Undefined offset: 0
Страницы: 1, 2
walerus
T1grOK
Цитата
И зависает, если условие не выполняется :)

все там выполняется, тот кто использует этот код, должен понимать, какие предложения должны быть в файле )). Я выдрал кусок из своих старых скриптов, писать же под параметры ТСа - лень :lol:

knigberi
Цитата
стоит ли мудрить с проверкой на '.', '..' и каталоги в результатах работы scandir() ???? Если стоит, подскажите как сделать?

//выбирает случайный файл в папке и возвращает к нему путь
function select_random_file($directory)
{
if (substr($directory, -1, 1)!='/')
$directory .= '/';
$files = glob($directory.'*');
return $files[array_rand($files)];
}
или так
if (($file=='.') || ($file=='..')) continue;
knigberi
Итак решение найдено!!!

Всем СПАСИБО!

Дано:
1. бесплатный хостинг с поддержкой php 5.6
2. Папка объемом 10 ГБ. с файлами в кол-ве 2000 шт. средним размером в 30 Мб.

Нужно:
1. из папки выбрать случайный файл
2. Выбрать, из выбранного случайного файла, случайную строку.

РЕШЕНИЕ:
function randomString($files, $folder){
//выбираем случайный файл из папки
$files_rand = $files[rand(0, sizeof($files)-1)];
//выбираем случайную строку из файла
$all_str = file($folder . '/' . $files_rand);
$i = rand(0, sizeof($all_str)-1);
//выводим строку – если она существует в массиве, и не пуста
if(!empty($all_str[$i])){
echo $all_str[$i];
return;
}
else{
// иначе – вызываем функцию повторно
randomString($files, $folder);
}
}


//указываем папку с файлами
$folder = 'полный путь к папке с txt файлами';
$files = scandir($folder);
randomString($files, $folder);


В ИТОГЕ:

1. Прогнали данный скрипт 100000 раз
2. Ошибок не обнаружено!

_____________
KNIGBERI.RU
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.