Qué bonito es programar... con mucho gusto trataré de ayudarte.
No hay mucho que aclarar, así que pasemos al código, esperando haber entendido el enunciado correctamente.
Código:
<?php
// Nota: Cuando se ejecute este programa, se asume que deben
// encontrarse todos los archivos involucrados en el mismo directorio
// en el que se encuentra este archivo.
// Variables que controlan los nombres de los archivos con los que se opera
// Los archivos sobre los que se opera deben nombrarse siguiende
// cierta convencion. Los nombres se compondran de: prefijo + X +
// sufijo, en donde X es un numero de 1 a 31. P.ej. foto3.jpg - en
// donde el prefijo es "foto" y el sufijo ".jpg"
$prefijo = 'foto';
$sufijo = '.jpg';
$a_mostrar = 'fotomostrar.jpg'; // Nombre para la "foto del dia".
// Primero lo primero, ¿senyor sistema operativo, me haria el favor de
// decirme que dia es hoy?
$dia = date ('j');
// Ahora, antes de proceder, hay que asegurarnos de que no hayamos ya
// renombrado el archivo de hoy. Si ya lo hicimos, no debemos hacer
// nada hasta manyana.
if (is_file ($prefijo . $dia . $sufijo)) {
// No lo hemos hecho aun! Hay que actuar...
// Primero averiguemos cual era el dia anterior. Cada dia tiene
// mas o menos 86400 segundos...
$dia_anterior = date ('j', time () - 86400);
// Ahora si, renombrar de vuelta el archivo de ayer
if (is_file ($a_mostrar))
rename ($a_mostrar, $prefijo . $dia_anterior . $sufijo);
// Y ahora si, con todas las ganas, cambiamos el nombre del archivo de hoy
rename ($prefijo . $dia . $sufijo, $a_mostrar);
}
// Listo, no dolio mucho...
?>
Algo que vale la pena mencionar, asegurate de que los archivos y el directorio en el que trabajes tengan los permisos apropiados para realizar los renombres de archivos. Espero que te sea de ayuda.