Ik wil zes plaatjes random plaatjes uit een mapje halen (waar er meerdere inzitten), maar ze mogen maar 1 keer voorkomen in die reeks van zes plaatjes.

Ik heb nu dit:
<?
$merken = "img/merken/";

$dir = opendir($merken);
while(false !== ($file = readdir($dir)))
{
if(($file !== ".") && ($file !== ".."))
{
list($filename, $ext) = explode(".", $file);
$ext = strtolower($ext);
if(($ext == "jpg") || ($ext == "png") || ($ext == "gif"))
{
$afbeelding[] = $file;
}
}
}
closedir($dir);

$aantal = count($afbeelding) - 1;
$rand = mt_rand(0, $aantal);
echo "<img src=\"".$merken . $afbeelding[$rand]."\" style=\"margin-right: 8px;\" alt=\"\">";
echo "<img src=\"".$merken . $afbeelding[$rand]."\" style=\"margin-right: 8px;\" alt=\"\">";
echo "<img src=\"".$merken . $afbeelding[$rand]."\" style=\"margin-right: 8px;\" alt=\"\">";
echo "<img src=\"".$merken . $afbeelding[$rand]."\" style=\"margin-right: 8px;\" alt=\"\">";
echo "<img src=\"".$merken . $afbeelding[$rand]."\" style=\"margin-right: 8px;\" alt=\"\">";
echo "<img src=\"".$merken . $afbeelding[$rand]."\" style=\"margin-right: 8px;\" alt=\"\">";
echo "<img src=\"".$merken . $afbeelding[$rand]."\" style=\"alt=\"\">";
?>

maar dan krijg ik dus zes keer hetzelfde plaatje
...
Bij nader inzien kon je er niks mee.

Maar misschien kun je de rand getallen in een $_SESSION ofzo zetten, en vervolgens controleren of er al 1 is die in die session voorkomt?
Je zou uit de array afbeeldingen de waarde/key kunnen verwijderen van het plaatje dat rand() heeft gekozen. Dan kan rand() hem niet opnieuw kiezen...

Elwin

Reageren