Foros del Web » Programando para Internet » PHP »

Aclaración código anterior

Estas en el tema de Aclaración código anterior en el foro de PHP en Foros del Web. Buenos días. Hace un momento he sido capaz de modificar el código que me ha facilitado un miembro del foro (y alq le estoy tremendamente ...
  #1 (permalink)  
Antiguo 06/06/2014, 03:13
 
Fecha de Ingreso: junio-2014
Mensajes: 101
Antigüedad: 9 años, 10 meses
Puntos: 0
Aclaración código anterior

Buenos días.

Hace un momento he sido capaz de modificar el código que me ha facilitado un miembro del foro (y alq le estoy tremendamente agradecida por ello, x cierto!) acorde a mis necesidades. He conseguido que funcione pero no acabo de entender qué es lo que hacen las líneas intermedias dentro del for a partir del is_numeric incluido, para qué sirven más que nada y porqué son necesarias. He cerrado el tema y no me he dado cuenta de preguntarle antes. Si alguien me puede aclarar mis dudas...gracias!

$archivos_y_directorios = scandir($directorio);
$maximo = -1;
for ($i = 0; $i < count($archivos_y_directorios); $i++) {
//is_dir indica si el nombre de archivo es un directorio
if (is_dir($ruta. "/" .$archivos_y_directorios[$i])){
//is_numeric comprueba si una variable es un número o un string numérico
if(is_numeric($archivos_y_directorios[$i])){
//intval obtiene el valor entero de una variable
if($maximo < intval($archivos_y_directorios[$i]), 10) {
$maximo = intval($archivos_y_directorios[$i], 10);
}
}
}
}
  #2 (permalink)  
Antiguo 06/06/2014, 04:16
Avatar de guardarmicorreo  
Fecha de Ingreso: noviembre-2012
Ubicación: Córdoba
Mensajes: 1.153
Antigüedad: 11 años, 5 meses
Puntos: 84
Respuesta: Aclaración código anterior

Cita:
Iniciado por elitown87 Ver Mensaje
Buenos días.

Hace un momento he sido capaz de modificar el código que me ha facilitado un miembro del foro (y alq le estoy tremendamente agradecida por ello, x cierto!) acorde a mis necesidades. He conseguido que funcione pero no acabo de entender qué es lo que hacen las líneas intermedias dentro del for a partir del is_numeric incluido, para qué sirven más que nada y porqué son necesarias. He cerrado el tema y no me he dado cuenta de preguntarle antes. Si alguien me puede aclarar mis dudas...gracias!

$archivos_y_directorios = scandir($directorio);
$maximo = -1;
for ($i = 0; $i < count($archivos_y_directorios); $i++) {
//is_dir indica si el nombre de archivo es un directorio
if (is_dir($ruta. "/" .$archivos_y_directorios[$i])){
//is_numeric comprueba si una variable es un número o un string numérico
if(is_numeric($archivos_y_directorios[$i])){
//intval obtiene el valor entero de una variable
if($maximo < intval($archivos_y_directorios[$i]), 10) {
$maximo = intval($archivos_y_directorios[$i], 10);
}
}
}
}
Te lo dice en los propios comentarios. is_dir comprueba si el string es un nombre de directorio y is_numeric si el valor es un número o string numérico.

Tal vez lo que no comprendes es porqué los if no tienen comparación lógica, eso es porque implícitamente sin comparación lógica if comprueba que sea TRUE, en caso de TRUE entonces realiza lo que hay entre corchetes { }

http://www.php.net/manual/es/control-structures.if.php

Cita:
Como se describe en la sección sobre expresiones , la expresión es evaluada a su valor booleano. Si la expresión se evalúa como TRUE, PHP ejecutará la sentencia y si se evalúa como FALSE la ignorará.
Un saludo.
__________________
Ayúdame a hacerlo por mi mismo.
  #3 (permalink)  
Antiguo 06/06/2014, 04:29
 
Fecha de Ingreso: junio-2014
Mensajes: 101
Antigüedad: 9 años, 10 meses
Puntos: 0
Respuesta: Aclaración código anterior

Los comentarios no me venían dados en el código, los puse yo buscando cómo se usa y paraqué sirve cada una de las funciones en el manual oficial de php. Los if los entiendo bien, mi duda es por ejemplo, porqué es necesaria la última estructura de control:

if($maximo < intval($archivos_y_directorios[$i]), 10) {
$maximo = intval($archivos_y_directorios[$i], 10);
}

lo que hace mi programa es ir creando una carpeta con número autoincremental cada vez que subo un contenido, para que se me almacene en dicha carpeta.

Si me pudieras explicar lo que hace para comprender bien el funcionamiento de mi código y poder reproducirlo en otro momento que sea necesario sin necesidad de echar la vista atrás, te lo agradecería.
Muchas gracias.
  #4 (permalink)  
Antiguo 06/06/2014, 04:40
Avatar de guardarmicorreo  
Fecha de Ingreso: noviembre-2012
Ubicación: Córdoba
Mensajes: 1.153
Antigüedad: 11 años, 5 meses
Puntos: 84
Respuesta: Aclaración código anterior

Es que la última comprobación, según entiendo yo (puedo equivocarme), no es necesaria.

El motivo de que no sea necesaria es que aunque scandir() emitiera el valor más bajo (FALSE==0), $maximo seguiría teniendo un valor menor que FALSE==0 por lo tanto ese if siempre se ejecutará y $máximo siempre se igualará al valor devuelto por intval().

Saludos.
__________________
Ayúdame a hacerlo por mi mismo.
  #5 (permalink)  
Antiguo 06/06/2014, 05:26
 
Fecha de Ingreso: junio-2014
Mensajes: 101
Antigüedad: 9 años, 10 meses
Puntos: 0
Respuesta: Aclaración código anterior

Perfecto!! Muchisimas gracias!

Etiquetas: variable
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:23.