Comparando 2 conjuntos de matrices de archivos entre sí

Soy nuevo en php y estoy creando una galería de imágenes. el código que he escrito funciona y funciona bien, pero necesito cargar archivos en el servidor. la galería funciona cargando una imagen en miniatura en la página y cuando se hace clic en la miniatura, se abrirá una ventana emergente elegante y mostrará una versión de alta resolución de la miniatura.

hay 2 imágenes en la estructura de carpetas. las fotos se encuentran en /gfx/photos y las miniaturas se encuentran en /gfx/photos/thumbs. Estoy tratando de escribir un script PHP que verifique si se han agregado nuevas fotos a la carpeta /gfx/photos/ y crea automáticamente una miniatura en la carpeta /gfx/photos/thumbs. Puedo hacer la parte de cambio de tamaño, pero necesito ayuda para comparar 2 archivos entre sí. las miniaturas y las fotos tienen exactamente el mismo nombre, solo que viven en ubicaciones separadas.

Tengo una matriz de imágenes que funciona así:

<?PHP
    $dir = "gfx/photos/thumbs";
    $files = scandir($dir);

    foreach ($files as $key => $value);
    $result = count($files);
    for ($i = 0; $i < $result; $i++) {
      /* loads appropriate code for every file... */
    }

?>

¿Podría usarse este código para comparar archivos entre sí o debería usar un código diferente?

¡Gracias por su ayuda gente!

preguntado el 22 de mayo de 12 a las 15:05

1 Respuestas

Aquí hay una manera simple de obtener este resultado y funcionará muy bien siempre que el directorio no se llene con millones de imágenes, aunque si puede tener millones de imágenes, probablemente debería dividirlas en directorios más pequeños.

Dado que scandir devuelve una matriz indexada de enteros, normalmente tendría que realizar una búsqueda de matriz para encontrar su imagen. Sin embargo. Si haces esto usando array_flip:

$image_name = "some_image.jpg";

$dir = "gfx/photos/thumbs";
$files = scandir($dir);

$files = array_flip($files); // makes the values = to keys and keys = values

// now you have an 0(1) look up table that you can simply check if the key exists
// which, now that we flipped the array, are the file names
if(!isset($files[$image_name])){
    // create the thumbnail etc
}

contestado el 22 de mayo de 12 a las 16:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.