웹 페이지에 배너를 일부 표시해야합니다. 배너 수는 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 (또는 원하는 이미지 수)이어야합니다. –