Question

I have 6 html files (test1.html, test2.html, test3.html and so on) and I want 3 of them to be randomly displayed with no duplicates. Then each time the web page is loaded a different order and file will be used.

Say: test1.html, test4.html, test2.html

Or: test5.html, test2.html, test3.html

Or: test3.html, test6.html, test2.html

etc.... with no duplicates

I have got this php code from a previous question which is a good start. It only includes 1 html file where I need 3?

<?php
$files = glob('*.html');
$random_file = $files[array_rand($files)];
include($random_file);
?>

Load in random .html file with PHP?

Any help is much appreciated, thanks.

Was it helpful?

Solution

Based on your example above.

$i = 0;
while($i < 3) {

    $randInt = rand(1, 6);
    if(isset($used)) {
        while($a < 1) {
            if(array_search($randInt, $used)) {
                $a++;
            } else {
                $randInt = rand(1, 6);
                continue;
            }
        }
    }
    include_once("path/to/test$randInt.html");
    $used[] = $randInt;
$i++;
}

Based on AD7six's idea, this is much more succinct and also allows the use of non-numerical file names:

$files = array(
    1=>'file_foo.html',
    2=>'file2_bar.html',
    3=>'file3_make.html',
    4=>'file4_it.html',
    5=>'file5_more.html',
    6=>'file6_succinct.html');

shuffle($files);

for($i=0;$i<3;$i++) {
    include_once("path/to/$files[$i]");
}
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top