Я успешно создал php-скрипт, который создает массив файлов из папки.
Проблема в том, что я хочу, чтобы он случайным образом взял один из файлов из массива. Он отлично работает, когда я вручную устанавливаю количество файлов в каталоге, а не когда я пытаюсь подсчитать размер массива. Вот что я придумал
$dir = 'MemeDatabase';
$fileNames = array();
if (is_dir($dir)){
$handle = opendir($dir);
while(false !== ($file = readdir($handle))){
if (is_file($dir.'/'.$file) && is_readable($dir.'/'.$file)){
$fileNames[] = $file;
}
}
closedir($handle);
int count($fileNames);
$fileNames = array_reverse($fileNames);
$rand_keys = array_rand($fileNames, $count);
echo $fileNames[$rand_keys[0]] . "\n";
print_r($fileNames);
} else {
echo "<p>There is an directory read issue</p>";
}
Просто используйте $fileName = array_rand($fileNames), линия int count($fileNames); или array_reverse() не нужна.
И $rand_keys = array_rand($fileNames, $count); неверен, если вы хотите вернуть только один ключ, используйте $rand_keys = array_rand($fileNames, 1);






Вы можете удалить часть кода и просто использовать array_rand(), который по умолчанию будет выбирать только 1 элемент из массива ...
closedir($handle);
// int count($fileNames); // This is an error anyway
// $fileNames = array_reverse($fileNames); // Not needed
// $rand_keys = array_rand($fileNames, $count);
$fileName = $fileNames[array_rand($fileNames)];
echo $fileName;
Это работает, спасибо! Я приму ответ после окончания перезарядки :)
Как насчет
shuffle()сначала массив, а затем выберите нужные данные