Офис НП AMWAY в Ярославле
Купить продукцию Амвей в Ярославле, офис Amway
На карте Купить AMWAY: офис в ЯрославлеКонсультации, презентации, мастер–классы, знакомство с продукцией, заказ и выдача купленного товара:
Адрес: улица Валентины Терешковой, дом 1 (Вход со двора)
Телефон: +7 (920) 112-00-91
Email: matyxho@mail.ru
Сайт: https://www.amway.ru/user/lebedem
Визитка: http://yar.meweb.ru
Иерархия статей
Статьи » Программирование » PHP: Вывод изображений из папки (директории)
Сниппет
При создании одного из плагинов понадобилось мне показать все изображения из указанной папки (директории). Признаться, раньше я не работал с подобным, но все новое всегда вызывает азарт. Поэтому, чуть погуглив и покурив мануалы, я набросал несколько строк кода, коими и поделюсь с вами.
PHP: Вывод изображений из папки (директории)
Опубликовал  Pisatel Pisatel Добавлено  06-04-2015 15:36 06 Апрель 2015 15:36:11 33496  Прочтений 33496 Прочтений
Обновлено: 06-04-2015 16:00 Обновлено: 06 апреля 2015 16:00:17  printer
В данной статье приведу небольшой скрипт, который ищет изображения в указанной папке (директории) и выводит их. Для начала — вывод всех изображений из папки (как всегда- комментарии прямо в коде):

Код: PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
    $wimage = "";
    $fimg = "";
    $path = "images/"; // задаем путь до сканируемой папки с изображениями
    $images = scandir($path); // сканируем папку
    if ($images !== false) { // если нет ошибок при сканировании
    $images = preg_grep("/\.(?:png|gif|jpe?g)$/i", $images); // через регулярку создаем массив только изображений
    if (is_array($images)) { // если изображения найдены
    foreach($images as $image) { // делаем проход по массиву
    $fimg .= "<img src='".$path.htmlspecialchars(urlencode($image))."' alt='".$image."' />";
  }
    $wimage .= $fimg;
} else { // иначе, если нет изображений
    $wimage .= "<div style='text-align:center'>Не обнаружено изображений в директории!</div>\n";
    }
  } else { // иначе, если директория пуста или произошла ошибка
    $wimage .= "<div style='text-align:center'>Директория пуста или произошла ошибка при сканировании.</div>";
}
    echo $wimage; // выводим полученный результат


Однако, задачи бывают разные. Попробую привести несколько примеров. Например, нам необходимо вывести не все изображения, а только первые 10. Для этого нужно будет лишь задать дополнительное условие при проходе по массиву. Итак, код с комментариями:

Код: PHP
1
2
3
4
5
6
    $stop = 9; // на 1 меньше, так как ключи в массиве начинаются с 0, то есть
// 0, 1, 2..., значит первые 10 значений закончатся на ключе 9
    foreach($images as $key => $image) { // делаем проход по массиву, выбирая ключ => значение
    $fimg .= "<img src='".$path.htmlspecialchars(urlencode($image))."' alt='".$image."' />";
    if ($stop == $key) break; // останавливаем проход по массиву, когда 9==9
  }


Следующий пример — выберем, например, каждое второе изображение:

Код: PHP
1
2
3
4
5
6
7
   foreach($images as $key => $image) { // делаем проход по массиву, выбирая ключ => значение
   if ($key % 2 == 0) { // если целочисленный остаток от деления ключа на 2 равен 0
   $fimg .= "<img src='".$path.htmlspecialchars(urlencode($image))."' alt='".$image."' />";
 } else { // иначе
   continue; // пропускаем изображение
   }
}


Ну и на закуску — выберем 5 случайных (рандомных) изображений из папки (каталога). Для этого я воспользуюсь php–функцией array_rand();, и код придется чуть усложнить, увеличив буквально на пару строк:

Код: PHP
1
2
3
4
5
6
7
8
9
10
11
    $arand = array_rand($images, 5); // получили массив 5 случайных ключей (ключ массива => ключ изображения)
    $i = 0;
    foreach($images as $key => $image) { // проход по массиву
    if ($arand[$i] == $key) {
 // если значение случайного ключа равно текущему ключу- выводим изображение
    $fimg .= "<img src='".$path.htmlspecialchars(urlencode($image))."' alt='".$image."' />";
  } else { // иначе
    continue; // пропускаем
   }
    $i++;
}


Если кто–то сможет сделать это более изящно — милости прошу. Я лично всегда стараюсь использовать для работы с массивами функции, которые специально предназначены для работы с ними и не изобретать велосипедов.

На этом, в общем, и закончу. Удачи в кодинге и процветания твоему проекту!
Понравилась статья?
Метки для данной статьи
Похожие статьи
Поделиться:   
Последние активные темы форума
  Темы Просмотров Ответов Последние сообщения