случайный выбор файла

usascha

Новичок
случайный выбор файла

Нашел следующий код на сайте:
PHP:
handle = opendir('../files');
$i=0;
while (false !== ($file = readdir($handle))) { 
	if ($file != "." && $file != "..") {
		$i++;
		echo $file.'<br>'; 
	}
}
closedir($handle); 
echo 'В папке '.$i.' файлов<br>';
$d=rand(0,$i);
echo "<br>".$d;
Как сделать чтобы случайно выводилось не число, а имя файла?
 

Фанат

oncle terrible
Команда форума
вместо echo $file.'<br>'; записывать имена файлов в массив.
 

usascha

Новичок
Судя по тому, что у меня заработало, я понял правильно подсказку:
PHP:
$handle = opendir('../cross_files');
$i=0;
while (false !== ($file = readdir($handle))) { 
	if ($file != "." && $file != "..") {
//		echo $file.'<br>';
		$files[$i]=$file;
		$i++;
	}
}
closedir($handle); 
echo 'В каталоге '.$i.' файлов<br>';
var_dump($files);
$d=rand(0,$i-1);
echo "<br>".$files[$d]."<br>";
Большое спасибо.

НО есть маленький вопрос: количество элементов в массиве - 4, а последний элемент имеет номер 3. Если функция rand выбирает 4, то это не соответствует никакому элементу массива и выдает ошибку. Так и должно быть?
 

baev

‹°°¬•
Команда форума
А как она "выбирает 4" если в коде '$i-1'?
 

confguru

ExAdmin
Команда форума
usascha

Проверяй файл на существование и на вожможность чтения
перед тем как его использовать.
 

usascha

Новичок
baev, это я уже последний вариант кода запостил, а без минуса как раз так и получается.


admin,
Проверка файла на существование это не одно и тоже, что отфильтровка "." и ".."? Ведь все остальное что в папке д.б. файлом (поддпиректорий нет)?!
 

baev

‹°°¬•
Команда форума
это я уже последний вариант кода запостил, а без минуса как раз так и получается
И?
ЗАЧЕМ Вы такой код с таким вопросом постили?
 
Сверху