[php] random bestanden nemen, maar geen dezelfde

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • hobbeldebobbel
  • Registratie: Februari 2001
  • Laatst online: 15-02-2023
ik ben bezig om een script te schrijven voor een sectie voor sponsoren voor verschilelnde delen van onze site.

Ik heb nu mijn script zover dat deze de verschillende sponsoren per dir inlaadt in een array genaamd $sponsor_files. Tot zover gaat alles goed...

Nu is er in de setting slechts ruimte voor 6 plaatjes van de sponsoren. Terwijl we er meestal wel meer hebben.
Daarom moet er afgewisseld worden tussen de plaatjes.
Mijn eerste insteek was om een random getal te nemen en deze te gebruiken mbv de count() en deze in de $sponsor_files[$getal] aan te roepen...
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$handle=opendir($path_to_sponsor); 
            while (false!==($file = readdir($handle))) { 
               if ($file != "." && $file != ".." && $file != "niet") { 
                        //  $new_url = str_replace('-', '/', $file);
                        array_push($sponsor_files, $file); 
                            
                  
               } 
            }
            closedir($handle);

        print($sponsor_files[rand(0,count($sponsor_files))]); //1
        print($sponsor_files[rand(0,count($sponsor_files))]); //2
        print($sponsor_files[rand(0,count($sponsor_files))]); //3
        print($sponsor_files[rand(0,count($sponsor_files))]); //4
        print($sponsor_files[rand(0,count($sponsor_files))]); //5
        print($sponsor_files[rand(0,count($sponsor_files))]); //6


maar nu doet zich het probleem voor dat soms de plaatjes hetzelfde zijn. Dus dat bijvoorbeeld 6 en 4 de zelfde sponsor wordt.

dus mijn nieuwe insteek is devolgende...
ik wil een tweede array maken genaamd $getallen, waarin ik een zestal getallen ingooi welke uniek zijn, dus er mogen zich geen twee dezelfde getallen bevinden in deze array.... aande hand van deze array kan ik dan de $sponsor_files aanroepen.....
echter ik heb geen flauw idee hoe ik deze tweede array kan maken..het maken van 6 random values lukt nog wel... maar kijken of deze uniek zijn?

hier zou een slimme opmerking kunnen staan
maar die staat er niet


Acties:
  • 0 Henk 'm!

  • sjoerdb2
  • Registratie: Juli 2001
  • Laatst online: 09-05 09:52
PHP:
1
2
3
4
5
$random = array_rand($sponsor_files,6);

foreach ($random as $value) {
   echo $value;
}

zoiets?

edit: iets netter

[ Voor 55% gewijzigd door sjoerdb2 op 07-05-2004 18:21 ]


Acties:
  • 0 Henk 'm!

  • bigbeng
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2021
Een oplossing kan zijn:
maak een array met getallen 1 t/m 6 (of 0 t/m 5, wat maar handig is). Haal dmv een random getal een entry uit de array, plaats deze in een nieuwe array en verwijder uit de eerste array.
Dit proces herhalen tot de eerste array leeg is.

Acties:
  • 0 Henk 'm!

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 02-09 11:02

D2k

[rml][ php] echt random[/rml]

search search search

Doet iets met Cloud (MS/IBM)


Acties:
  • 0 Henk 'm!

  • hobbeldebobbel
  • Registratie: Februari 2001
  • Laatst online: 15-02-2023
sjoerdb schreef op 07 mei 2004 @ 18:20:
PHP:
1
2
3
4
5
$random = array_rand($sponsor_files,6);

foreach ($random as $value) {
   echo $value;
}

zoiets?

edit: iets netter
deze werkt perfect.... dat array_rand() dit the trick

hier zou een slimme opmerking kunnen staan
maar die staat er niet