• Случайный вывод элементов на php?

    vhood
    @vhood
    Не забывайте отмечать решения
    Можно использовать массив с названиями подключаемых файлов и перемешивать его с помощью shuffle перед выводом.
    Выводить в цикле.
    $files = [
        'file-foo.php',
        'file.php',
        'file2.php',
        'file-bar.php',
        'file3.php',
    ];
    shuffle($files);
    
    foreach  ($files as $file) {
        include ($file);
    }


    Если файлов много, 10 файлов можно подключать, выбрав срез массива имен файлов
    foreach  (array_slice($files, 0, 10) as $file) {
        include ($file);
    }

    Однако операция shuffle для большого массива может быть затратной, по-этому вместо shuffle и array_slice можно воспользоваться array_rand
    - shuffle($files);
    
    - foreach  ($files as $file) {
    + foreach  (array_rand($files, 10) as $file) {
        include ($file);
    }
    Но array_rand не подойдет, если нужно сделать некую пагинацию (выводить первые 10 случайных файлов, затем следующие 10 других случайных файлов и в итоге вывести все файлы в случайном порядке, а затем поменять порядок и снова выводить по 10). Подход с array_slice позволит сделать такую пагинацию.
    Ответ написан
    2 комментария