@BlogerPodpishis

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

Подскажите как мне сделать что бы на страницы случайным образам выводились элементы и в случайном порядке?

Есть
<body>
<?php include ('file1.php');?>
<?php include ('file2.php');?>
<?php include ('file3.php');?>
<?php include ('file4.php');?>
<?php include ('file5.php');?>
</body>


Как сделать так что бы они выводились в каждый раз в случайном порядке при открытии страницы

<body>
<?php include ('file5.php');?>
<?php include ('file1.php');?>
<?php include ('file3.php');?>
<?php include ('file2.php');?>
<?php include ('file4.php');?>
</body>


Или если таких файлов допустим 100шт, как мне сделать что бы они выводились случайно допустим по 10 шт, это реально?

Может быть что то типо такого?
$file = rand($1, $5) // Если так в php не работает извиняюсь
$1 = 'file1.php';
$2 = 'file2.php';
$3 = 'file3.php';
$4 = 'file4.php';
$5 = 'file.php';
<body>
<?php include ($file);?>
</body
  • Вопрос задан
  • 92 просмотра
Решения вопроса 1
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 позволит сделать такую пагинацию.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы