Toon posts:

[php] 4 random items array

Pagina: 1
Acties:

Verwijderd

Topicstarter
hallo,

met een stukje code lees ik alle .jpg bestanden in een dir uit en plaats deze in een array.

Nu wil ik graag uit deze array random 4 entry's hebben. Dit heb ik als volgt gedaan:
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
        <?
                    // dir lezen en bestanden in array plaatsen
                    $open = opendir($dir); 
                    $i=0;
                    while (false !== ($bestanden = readdir($open))) {    
                    if(($bestanden<>".") AND ($bestanden<>"..") 
AND ($bestanden<>"thumbnails") 
AND (substr($bestanden,-3)=="jpg")) {        
                    $bestandslijst[$i] = $bestanden;        
                    $i++;     
                    } 
                    } 
                    closedir($open);
                
                    //generate entry
                    $entry = array_rand($bestandslijst);
                    //$img = filename
                    $img[1] = $bestandslijst[$entry];
                    $entry = array_rand($bestandslijst);
                    $img[2] = $bestandslijst[$entry];
                    $entry = array_rand($bestandslijst);
                    $img[3] = $bestandslijst[$entry];
                    $entry = array_rand($bestandslijst);
                    $img[4] = $bestandslijst[$entry];
                    $bestandslijst = array();   
                    ?>
            [img]"<?[/img]/<? echo $img[1]; ?>" border="0"><br>
            [img]"<?[/img]/<? echo $img[2]; ?>" border="0"><br>
            [img]"<?[/img]/<? echo $img[3]; ?>" border="0"><br>
            [img]"<?[/img]/<? echo $img[4]; ?>" border="0">


Kan dit handiger c.q. effectiever? Het werkt zo wel maar heb het gevoel dat ik dubbelwerk doe en dit is niet zo makkelijk aan te passen wanneer het bijv. op den duur 15 entry's gaat omvatten.

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

[rml][ php] echt random[/rml]
daar staat ook wel een/meerdere manieren in

Doet iets met Cloud (MS/IBM)


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 28-08 12:00

Janoz

Moderator Devschuur®

!litemod

Hmm .. op deze manier zou je dubbelen kunnen krijgen.. Kijk trouwens eens in de manual bij array_rand. Je kunt namelijk nog een extra parameter opgeven waardoor jouw versie maar 1 regel ipv8 nodig heeft. Dan is gelijk ook het dubbelen probleem opgelost :)

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Verwijderd

Topicstarter
ga er meteen ff naar toe

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Janoz schreef op 08 oktober 2002 @ 16:31:
Hmm .. op deze manier zou je dubbelen kunnen krijgen.. Kijk trouwens eens in de manual bij array_rand. Je kunt namelijk nog een extra parameter opgeven waardoor jouw versie maar 1 regel ipv8 nodig heeft. Dan is gelijk ook het dubbelen probleem opgelost :)
Random != Uniek Random ;)

[uitleg]
Als ik 4 x een random waarde wil hebben tussen 1 en 10. En ik krijg 4 x 1 dan zou dat een goed resultaat kunnen zijn.
[/uitleg]

Programmer - an organism that turns coffee into software.


Verwijderd

Topicstarter
nu bedoelde ik eigenlijk uniek random ;-)

na het bestuderen van de gebruiksaanwijzing kom ik tot de conclusie dat het met num_req kan worden gedaan.

dus zo: $entry = array_rand($bestandslijst[4]);

worden de img dan gewoon wel img[1], img[2], enz...
en die kan ik dan met for lus snel en simpel uitlezen ?
Pagina: 1