Добрый день! Есть скрипт который выводит картинки на сайте рэндом(random). Скрипт работает, но от него требуеться чтобы он не просто выводил катринки рэндомом а еще чтоб они не повторялись! не могу добиться ни как этого результата вот скрипт: PHP: <?php Error_Reporting(E_ALL & ~E_NOTICE); $folder=opendir("."); while ($file = readdir($folder)) $names[count($names)] = $file; closedir($folder); sort($names); $tempvar=0; for ($i=0;$names[$i];$i++){ $ext=strtolower(substr($names[$i],-4)); if ($ext==".jpg"||$ext==".gif"||$ext=="jpeg"||$ext==".png"){$names1[$tempvar]=$names[$i];$tempvar++;} } srand ((double) microtime() * 10000000); $rand_keys = array_rand ($names1, 2); $slika=$names1[$rand_keys[0]]; $dimensions = GetImageSize($slika); if ($pic==random){header ("Location: $slika");} else {echo "<img src=\"$slika\" $dimensions[3]>";} ?> заранее благодарен!
Код не смотрел. Первое, что пришло на ум - записывать в массив имя уже показанных картинок и проверять при рандоме новой, показывалась или нет. Если нужно, то загнать массив в сессии.
Или наоборот - в массив запихать все картинки, потом выбрать рандомом какую-то, и тут же удалять из массива.
Спасиба огромное....догнал...вариант с удалением из массива элемента мне понравился....буду пробовать. Надо только с синтаксисом разобраться)))новичок йопты))))Спасиба Товарищи!!!
Неделю назад решал аналогичную проблему. Вот что получилось PHP: <? $n_foto=1; $n_foto_show = 3; // количество выводимых фотографий $show=array(); $i = 0; $pictures = array(); $handle=opendir('i/img_random'); while ($file = readdir($handle)) { if ($file == "." || $file == "..") //пропускаем папки . и .. continue; $pictures[$i] = $file; $i++; } closedir($handle); $i--; $count=count($pictures); if ($count < $n_foto_show) { echo 'Количество изобреажений в папке меньше чем требуется вывести уникальных изображений'; exit; } while ($n_foto <= $n_foto_show) { $random = rand(0,$i); if (in_array($random, $show, TRUE)) { while(in_array($random,$show,false)) { $random = rand(2,$i); } } echo "<center><img src='i/img_random/$pictures[$random]'></center><br>"; //выводим $show[$n_foto]=$random; //записываем в массив выведенных $n_foto++; //выполняем все еще раз } ?> конечно далеко от идеального алкоритма зато радует что сам сделал Понравилась идея с удалением из массива,сейчас буду переделывать