Как получить случайное изображение из каталога с помощью PHP

У меня есть один каталог под названием images / tips.

Теперь в этом каталоге у меня много изображений, которые могут измениться.

Я хочу, чтобы скрипт PHP читал каталог, находил изображения и из этих изображений находил случайное изображение.

Любая идея о том, как это сделать?

$imagesDir = 'images/tips/'; $images = glob($imagesDir . '*.{jpg,jpeg,png,gif}', GLOB_BRACE); $randomImage = $images[array_rand($images)]; // See comments 

Вы можете отправить второй аргумент array_rand() чтобы получить более 1.

 $images = glob('images/tips/*'); return $images[rand(0, count($images) - 1)]; 

Однако это не гарантирует, что одно и то же изображение не будет выбрано дважды подряд.

 <?php foreach (glob("gallery/*") as $filename) { echo '<li><a href="'.$filename.'" title=""><img src="'.$filename.'" alt="" /></a> </li>'; } ?> 

Посмотрите на этот код, используйте его, если это полезно для вас. Он загружает все файлы из папки и печатает их в формате выше. Я сделал этот код для использования с лайтбокс.

 function get_rand_img($dir) { $arr = array(); $list = scandir($dir); foreach($list as $file) { if(!isset($img)) { $img = ''; } if(is_file($dir . '/' . $file)) { $ext = end(explode('.', $file)); if($ext == 'gif' || $ext == 'jpeg' || $ext == 'jpg' || $ext == 'png' || $ext == 'GIF' || $ext == 'JPEG' || $ext == 'JPG' || $ext == 'PNG') { array_push($arr, $file); $img = $file; } } } if($img != '') { $img = array_rand($arr); $img = $arr[$img]; } $img = str_replace("'", "\'", $img); $img = str_replace(" ", "%20", $img); return $img; } echo get_rand_img('images'); 

замените «изображения» на вашу папку.

Согласился с алексей. Используйте простую функцию.

 function RandImg($dir) { $images = glob($dir . '*.{jpg,jpeg,png,gif}', GLOB_BRACE); $randomImage = $images[array_rand($images)]; return $randomImage; } $the_image = RandImg('images/tips/'); echo $the_image; 

Вы можете использовать opendir () для чтения в именах файлов из этого каталога, сохраняя каждое имя файла в массиве. Затем используйте rand () с min и max, соответствующими вашим ключам массива, чтобы выбрать элемент из массива.

Simpler:

 $directory = "medias/photos/"; $img = glob($directory . "*.jpg"); shuffle($img); 

Загрузить папку с изображениями:

 $folder = opendir(images/tips/); 

Создайте таблицу из файлов / изображений из каталога:

 $i = 0; while(false !=($file = readdir($folder))){ if($file != "." && $file != ".."){ $images[$i]= $file; $i++; } } 

Выберите случайное:

 $random_img=rand(0,count($images)-1); 

Показать на странице:

 echo '<img src="images/tips'.$images[$random_img].'" alt="" />'; 

Надеюсь, поможет. Конечно, заключите его в <?php ?> .