Intereting Posts
Как отправить форму ajax в symfony2? WordPress Сохранить форму Option Customizer XAMPP – «Эта веб-страница недоступна» php требует вызова класса изнутри метода Как передать переменные в Zend? Сделать элемент userid в массиве в качестве родительского ключа php date (), «Неверное сформированное числовое значение столкнулось» не хочет форматировать дату, прошедшую в $ _POST Перепишите URL-адрес настраиваемого веб-сайта электронной коммерции на основе php Как реализовать DRM в HTML5 Как отобразить выбранные значения в раскрывающемся списке нескольких вариантов в приложении Yii2? Разработка страницы входа в Phonegap с использованием Ajax и на сервере MySQL Установить прокси в Guzzle Обработка больших наборов данных через AJAX не приносит никаких преимуществ по скорости Автоматическое разрешение Laravel ioc – работает от контроллера, но не от пользовательского класса Проверьте, пользуется ли пользователь IE в режиме совместимости

Образы PHP из каталога – Случайный порядок

У меня есть страница моего сайта, которую я использую для хранения эталонных изображений.

В настоящее время я просто отбрасываю все изображения в каталог на моем сервере, и 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!'; } }