Я должен показать некоторые баннеры на веб-странице. Количество баннеров будет с 10 (максимум 10). Я могу установить количество баннеров и каждую баннерную папку в базе данных. Изображения баннера хранятся в отдельных папках сервера в зависимости от категории. Баннеры отображаются в столбцах.Генерация случайных чисел без дубликатов
Мой код, Здесь long1, long2, ... long10 имена каталогов из базы данных
$array=array();
for($n=1;$n<=$long;$n++)
{
$files = array();
$dir=${'long'.$n};
if(is_dir($dir))
{
$openDir = opendir($dir);
while (false !== ($file = readdir($openDir)))
{
if ($file != "." && $file != "..")
{
$files[] = $file;
}
}
closedir($openDir);
}
mt_srand((double) microtime()*1000000);
$randnum = mt_rand(0,(sizeof($files)-1));
$arraycount=count($array);
for($index=0;$index<=$arraycount;$index++)
{
if(!in_array($array,$randnum))
{
$array[]=$randnum;
}
}
$img = $dir."/".$files[$randnum];
<input type="image" class="advt_image" src="<?=$img;?>" alt="" name=""/>
}
например: если есть 7 баннер в базе данных, я должен показать 7 баннеров с различными или той же папке (некоторые баннеры будут из одной папки). Мне нужно избегать дублирования баннеров каждый раз, когда я показываю веб-страницу.
Я назначил массив для хранения каждого случайного числа. Нужно ли мне что-то менять в коде? любая мысль/идея?
Спасибо!
В чем вопрос? –
Я бы начал с массива всех возможных чисел и случайным образом извлекал числа в новый массив, пока у меня не было достаточно. Таким образом, вы никогда не повторяетесь. – TheZ
не должно быть $ index <= $ arraycount, оно должно быть $ index <10 (или количество изображений, которое вы хотите выбрать) –