Random maar niet dubbel
Ik gebruik momenteel het volgende script:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?php
function getRandomFromArray($ar) {
mt_srand( (double)microtime() * 1000000 );
$num = array_rand($ar);
return $ar[$num];
}
function getImagesFromDir($path) {
$images = array();
if ( $img_dir = @opendir($path) ) {
while ( false !== ($img_file = readdir($img_dir)) ) {
// checks for gif, jpg, png
if ( preg_match("/(\.gif|\.jpg|\.png)$/", $img_file) ) {
$images[] = $img_file;
}
}
closedir($img_dir);
}
return $images;
}
$root = '';
// If images not in sub directory of current directory specify root
//$root = $_SERVER['DOCUMENT_ROOT'];
$path = 'images/';
// Obtain list of images from directory
$imgList = getImagesFromDir($root . $path);
$img = getRandomFromArray($imgList);
?>
function getRandomFromArray($ar) {
mt_srand( (double)microtime() * 1000000 );
$num = array_rand($ar);
return $ar[$num];
}
function getImagesFromDir($path) {
$images = array();
if ( $img_dir = @opendir($path) ) {
while ( false !== ($img_file = readdir($img_dir)) ) {
// checks for gif, jpg, png
if ( preg_match("/(\.gif|\.jpg|\.png)$/", $img_file) ) {
$images[] = $img_file;
}
}
closedir($img_dir);
}
return $images;
}
$root = '';
// If images not in sub directory of current directory specify root
//$root = $_SERVER['DOCUMENT_ROOT'];
$path = 'images/';
// Obtain list of images from directory
$imgList = getImagesFromDir($root . $path);
$img = getRandomFromArray($imgList);
?>
Nu loop ik alleen tegen het volgende aan: het script selecteert afbeeldingen uit een map op willekeurige manier en Echot deze.
Nu ben ik op zoek naar een manier om te voorkomen dat hij ze dubbel weer gaat geven.
Wie kan me daar bij helpen?
Met vriendelijke groet
Sander
de gekoze plaatjes opslaan in een array en kijken of hij hem dan al heeft opgeslagen?
Het seeden van de random number generator hoeft niet meer als ik met niet vergis.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
<?php
function getRandomFromArray($ar) {
mt_srand( (double)microtime() * 1000000 );
$num = array_rand($ar);
return $ar[$num];
}
function getImagesFromDir($path) {
$images = array();
if ( $img_dir = @opendir($path) ) {
while ( false !== ($img_file = readdir($img_dir)) ) {
// checks for gif, jpg, png
if ( preg_match("/(\.gif|\.jpg|\.png)$/", $img_file) ) {
$images[] = $img_file;
}
}
closedir($img_dir);
}
return $images;
}
$root = '';
// If images not in sub directory of current directory specify root
//$root = $_SERVER['DOCUMENT_ROOT'];
$path = 'photos/';
// Obtain list of images from directory
$imgList = getImagesFromDir($root . $path);
$img = getRandomFromArray($imgList);
// eerste afbeelding
$img = getRandomFromArray($imgList);
$check1 = $img;
echo"<img src=".$path.$img." alt='' />";
// 2de afbeelding
while($img == $check1 || $img2 == $check1){
$img2 = getRandomFromArray($imgList);
}
$check2 = $img2;
echo"<img src=".$path.$img2." alt='' />";
// 3de afbeelding
while($img2 == $check2 || $img3 == $check1 || $img3 == $check2){
$img3 = getRandomFromArray($imgList);
}
$check3 = $img3;
echo"<img src=".$path.$img3." alt='' />";
// 4de afbeelding
while($img3 == $check3 || $img4 == $check1 || $img4 == $check2 || $img4 == $check3){
$img4 = getRandomFromArray($imgList);
}
$check4 = $img4;
echo"<img src=".$path.$img4." alt='' />";
// 5de afbeelding
while($img4 == $check4 || $img5 == $check1 || $img5 == $check2 || $img5 == $check3 || $img5 == $check4){
$img5 = getRandomFromArray($imgList);
}
$check5 = $img5;
echo"<img src=".$path.$img5." alt='' />";
?>
function getRandomFromArray($ar) {
mt_srand( (double)microtime() * 1000000 );
$num = array_rand($ar);
return $ar[$num];
}
function getImagesFromDir($path) {
$images = array();
if ( $img_dir = @opendir($path) ) {
while ( false !== ($img_file = readdir($img_dir)) ) {
// checks for gif, jpg, png
if ( preg_match("/(\.gif|\.jpg|\.png)$/", $img_file) ) {
$images[] = $img_file;
}
}
closedir($img_dir);
}
return $images;
}
$root = '';
// If images not in sub directory of current directory specify root
//$root = $_SERVER['DOCUMENT_ROOT'];
$path = 'photos/';
// Obtain list of images from directory
$imgList = getImagesFromDir($root . $path);
$img = getRandomFromArray($imgList);
// eerste afbeelding
$img = getRandomFromArray($imgList);
$check1 = $img;
echo"<img src=".$path.$img." alt='' />";
// 2de afbeelding
while($img == $check1 || $img2 == $check1){
$img2 = getRandomFromArray($imgList);
}
$check2 = $img2;
echo"<img src=".$path.$img2." alt='' />";
// 3de afbeelding
while($img2 == $check2 || $img3 == $check1 || $img3 == $check2){
$img3 = getRandomFromArray($imgList);
}
$check3 = $img3;
echo"<img src=".$path.$img3." alt='' />";
// 4de afbeelding
while($img3 == $check3 || $img4 == $check1 || $img4 == $check2 || $img4 == $check3){
$img4 = getRandomFromArray($imgList);
}
$check4 = $img4;
echo"<img src=".$path.$img4." alt='' />";
// 5de afbeelding
while($img4 == $check4 || $img5 == $check1 || $img5 == $check2 || $img5 == $check3 || $img5 == $check4){
$img5 = getRandomFromArray($imgList);
}
$check5 = $img5;
echo"<img src=".$path.$img5." alt='' />";
?>
nu is alleen de volgende regel fout:
$num = array_rand($ar);
Warning: array_rand() [function.array-rand]: First argument has to be an array
Ik kom er even niet meer uit, wie weet er raad?