El problema surge al momento en el que alimentas a la variable
$archivo
, pues cuando lo recorres con el bucle
foreach
, además, no sé por qué restas 2 al total, supongo que querrás recorrer al array desde la posición inicial (cero), entonces, solamente debes de restar 1.
Para tomar a las imágenes del directorio, lo haría así:
Código PHP:
Ver originalfunction filtrar ($imagen){
$tipos = array('jpg', 'jpeg', 'png', 'gif'); }
De este modo, tomo a todos los archivos del directorio
gallery (recordando que
scandir devuelve un array) y lo filtro con la función
array_diff para así obtener al conjunto de archivos que no coincidan con los elementos del segundo array que paso como parámetro. Luego, hago un segundo filtro, esta vez con la función
array_filter, a la cual le paso el array resultante de la operación anterior y la función
filtrar, la cual devuelve únicamente a los archivos cuya extensión corresponda con alguna de las dadas en el array
$tipos
. Para esto, hago uso de las siguientes funciones:
Te sugiero revisar cada enlace para que sepas qué hace cada una de esas funciones.
Como
$imagenes
es un array con todas las imágenes filtradas, solo es cuestión de que las imprimas mediante un bucle.
Código PHP:
Ver original<?php
foreach ($imagenes as $img){
?>
<img src = 'gallery/<?=$img?>' /> <br />
<?php
}
Mientras que el total de imágenes, lo obtienes utilizando la función
count aplicada al array
$imagenes
.
Saludos