Archief - PHP ~ Random afbeeldingen per refresh.

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

zeemeerman2

Legacy Member
Hallo, ik moet een website maken voor school, en er is één ding dat maar niet wilt werken.
Ik heb een folder van 6 afbeeldingen, en ik wil dat er elke refresh 3 random afbeeldingen geladen worden. Met mijn onderstaande code heb ik er nog geen rekening mee gehouden dat het 3 unieke afbeeldingen moeten zijn, dus dat alle afbeeldingen meermaals kunnen voorkomen, kan gebeuren. Dat is nog niet voor nu om me zorgen over te maken.

Mijn code werkt... maar half, en soms ook helemaal niet. Nogal at random. Maar dat kan ook, aangezien ik er een random-functie in heb steken.

Ik vind mijn fout niet na veel gezoek, kan iemand mij op weg helpen aub? Alvast bedankt.
PHP:
<?php
	for($i=1;$i<=3;$i++)
	{
		$j=mt_rand(1,6);
		$a[]=$j;
		if($a[$j]==1){$a=001;return $a;}
	elseif($a[$j]==2){$a=002;return $a;}
	elseif($a[$j]==3){$a=003;return $a;}
	elseif($a[$j]==4){$a=004;return $a;}
	elseif($a[$j]==5){$a=005;return $a;}
	else             {$a=006;return $a;}

	}
	echo '<img src="img/winkel/'.$a[1].'.jpg"><img src="img/winkel/'.$a[2].'.jpg"><img src="img/winkel/'.$a[3].'.jpg">';
?>

Resultaat moet iets zijn van
<img src="img/winkel/002.jpg"><img src="img/winkel/005.jpg"><img src="img/winkel/003.jpg">

ultddave

Legacy Member
PHP:
// Mogelijke waarden (kan je uiteraard in een loop plaatsen :) )
$values = array();
$values[0] = 1;
$values[1] = 2;   
$values[2] = 3;
$values[3] = 4;
$values[4] = 5;
$values[5] = 6;
// 3 UNIEKE waarden kiezen
$result = array();
for($i=0; $i<3; $i++) 
{ 
   $j = mt_rand(0, count($values) - 1);
   $result[$i]=$values[$j];
   unset($values[$j]); // Verwijderen uit lijst
} 
    echo '<img src="img/winkel/'.$result[0].'.jpg"><img src="img/winkel/'.$result[1].'.jpg"><img src="img/winkel/'.$result[2].'.jpg">';

Idee erachter: Als een value gekozen wordt, ga je hem uit de array verwijderen (met "unset").
De volgende keer als de loop uitgevoerd wordt, kan je die waarde niet meer kiezen. => geen dubbels => alles uniek.

Zo zou ik het doen. ;) Je kan uiteraard ook array_rand() gebruiken voor die indices te kiezen, ipv mt_rand. Zoals door de poster hierboven is aangehaald.

Ik veronderstel toch dat in PHP, de indices opschuiven indien je een element unset?

zeemeerman2

Legacy Member
Bedankt voor de snelle reacties, allebei. Hier kan ik al iets mee. Ik heb nog veel te leren, denk ik dan.

Hoe dan ook, bedankt voor jullie informatie! :)
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan