Search code examples
phphtmlselectrandomno-duplicates

Load in multiple random .html files with PHP


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.


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]");
    }