PHP: ¿Qué hay de malo en este código y por qué no se incrementa la variable?

$blogDir = 'blog/';
$blogdirHandle = opendir( $blogDir );
$checkingFile;
$number = 0;
$codeNumber = '-'.$number.'-';
if( $blogdirHandle = opendir( 'blog/' ) )
{
    while( ( $checkingFile = readdir( $blogdirHandle ) ) !== false ) 
    {
        if( $checkingFile != '.' && $checkingFile != '..' && !is_dir( $checkingFile ) && strpos( $checkingFile, $codeNumber ) !== false )
        {
            $number++;
        }
    }
    closedir( $blogdirHandle );
}

Lo que intento hacer es:

Vaya al directorio $blogDir y busque un archivo que tenga el mismo $codeNumber ( -$number- ), y si se encuentra un archivo, aumente $number en uno y busque hasta que se busquen todos los archivos. Por alguna razón no está funcionando. No aumentará el valor de $number, aunque haya archivos con el mismo $codeNumber en el directorio. ¿Alguna ayuda?

preguntado el 09 de marzo de 12 a las 21:03

1 Respuestas

Una vez que incrementas $number, necesita reasignar $codeNumber dentro de tu bucle:

if( $blogdirHandle = opendir( 'blog/' ) )
{
    while( ( $checkingFile = readdir( $blogdirHandle ) ) !== false ) 
    {
        if( $checkingFile != '.' && $checkingFile != '..' && !is_dir( $checkingFile ) && strpos( $checkingFile, $codeNumber ) !== false )
        {
            $number++;
            $codeNumber = '-'.$number.'-';
        }
    }
    closedir( $blogdirHandle );
}

respondido 09 mar '12, 22:03

Sí. Muchas gracias. Sabía que la respuesta era algo estúpidamente simple como eso, pero simplemente no podía señalarlo. - usuario1219742

Por cierto, también hay un problema con la llamada a is_dir(). Necesitas agregarle el directorio blog/ así: !is_dir( $blogDir.$checkingFile ) - Sin embargo, funciona de todos modos, porque si el archivo no existe, devuelve falso. - pglhall

podría tener sentido poner $codeNumber = '-'.$number.'-'; al comienzo del tiempo, en lugar de afuera, o en el si - Ascherer

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