У меня есть страница моего сайта, которую я использую для хранения эталонных изображений.
В настоящее время я просто отбрасываю все изображения в каталог на моем сервере, и php отображает их, как мне нравится.
Я бы хотел спросить, как заставить их отображать их в разных случайных порядках каждый раз, когда страница обновляется?
код ниже:
$dir = 'images'; $file_display = array ('jpg', 'jpeg', 'png', 'gif'); if (file_exists($dir) ==false) { echo 'Directory \'', $dir, '\' not found'; } else { $dir_contents = scandir($dir); foreach ($dir_contents as $file) { $file_type = strtolower(end(explode('.', $file))); if ($file !== '.' && $file !== '..' && in_array($file_type, $file_display) == true) { echo '<img class="photo" src="', $dir, '/', $file, '" alt="', $file, '" />'; } } }
Чтобы гарантировать, что заказ отличается, каждый раз требуется, чтобы вы несли данные о порядке, в котором они отображались между загрузками страниц. Однако это не обязательно то, что вам нужно – если вы просто производите случайный порядок каждый раз, то чем выше число изображений в каталоге, тем ниже вероятность того, что вы получите тот же порядок дважды.
Вы можете просто использовать shuffle()
для рандомизации порядка массива:
$dir = 'images'; $file_display = array ('jpg', 'jpeg', 'png', 'gif'); if (file_exists($dir) == false) { echo 'Directory \'', $dir, '\' not found'; } else { $dir_contents = scandir($dir); shuffle($dir_contents); foreach ($dir_contents as $file) { $file_type = strtolower(end(explode('.', $file))); if ($file !== '.' && $file !== '..' && in_array($file_type, $file_display) == true) { echo '<img class="photo" src="', $dir, '/', $file, '" alt="', $file, '" />'; } } }
Посмотрите на функцию тасования. http://php.net/manual/en/function.shuffle.php Поскольку PHP не имеет статуса, вы будете каждый раз повторно сканировать свой каталог или присваивать переменную $ dir_contents переменной сеанса. Затем вы можете просто перетасовать переменную сеанса.
if ($file !== '.' && $file !== '..' && in_array($file_type, suffle($file_display)) == true) {
Попробуй это.
Использовать php shuffle
для массива изображений, созданных scandir
$dir = 'images'; $file_display = array ('jpg', 'jpeg', 'png', 'gif'); if (file_exists($dir) == false) { echo 'Directory \'', $dir, '\' not found'; } else { $dir_contents = scandir($dir); if(shuffle($dir_contents)) { foreach ($dir_contents as $file) { $info = new SplFileInfo($file); // scandir returns an array of files and,or directories // so we should check if $file is a file // and that it's extension matches the allowed ones // which are ('jpg', 'jpeg', 'png', 'gif') if(is_file($file) && in_array($info->getExtension(),$file_display)) { echo '<img class="photo" src="', $dir, '/', $file, '" alt="', $file, '" />'; } } } else { echo 'Error applying random order!'; } }