|
Nov
20
|
La estructura If nos permite ejecutar bloques de codigo de forma condicional,
if( condicion )
//codigo a ejecutar
?>
Si la condicion es evaluada como verdadero entonces el bloque de codigo es ejecutado, de caso contrario simplemente se salta el bloque y continua con la ejecucion del script, veamos un ejemplo concreto:
$numero = 18;
if( $numero > 10 )
echo 'Mi numero es mayor a 10';
?>
Mi numero es mayor a 10
En este caso la condicion es verdadera pues 18 es mayor que 10 y por tanto el ‘echo’ ejecutado. Tambien podriamos entregar un mensaje distinto si el valor es menor a 10 y otro si es exactamente 10, para esto usamos elseif y else.
$numero = 8;
if( $numero > 10 )
echo 'Mi numero es mayor a 10';
elseif( $numero < 10 )
echo 'Mi numero es menor a 10';
else
echo 'Mi numero es igual a 10';
?>
Mi numero es menor a 10
En este caso la primera condicion del if evalua si el numero es mayor a 10, al no serlo pasa al ‘elseif’ que evalua una nueva condicion. Es posible usar tantos elseif como consideremos necesario. El ‘else’ se ejecutara solo si todas las condiciones anteriores no se cumplen. Veamos otro ejemplo:
$nombre = 'Pedro';
if( $nombre == 'Jose' )
echo 'Que tal Jose!';
elseif( $nombre == 'Diego' )
echo 'Tanto tiempo Diego!';
elseif( $nombre == 'Juan' )
echo 'Como te va Juan?';
else
echo 'Lo siento, no te conozco';
?>
Lo siento, no te conozco
En este caso comparo el valor de la variable $nombre con distintos nombres, al no cumplirse ninguna de las condiciones se ejecuta el bloque de codigo bajo el else. Fijense que para comparar dos valores utilizo ==, si utilizo uno solo estaria asignando, por ejemplo:
$color = 'azul';
if( $color = 'rojo' )
echo 'A mi tambien me gusta el color rojo!';
else
echo 'No me gusta ese color';
?>
A mi tambien me gusta el color rojo!
Uno esperaria que la condicion del if fuera falsa y por tanto mostrara el mensaje bajo el ‘else’, sin embargo, utilize = en vez de == por lo que en realidad no compare sino asigne ‘rojo’ a la variable $color.
Avancemos un poco mas, hasta ahora todos los bloques de codigo han sido de solo una linea, que sucede si bajo determinada condicion quiero ejecutar mas lineas de codigo, veamos que sucede en el siguiente ejemplo:
$valor = 5;
if( $valor == 8 )
echo 'Dentro del if';
echo 'Fuera del if';
?>
Fuera del if
Si bien la condicion no se cumple, la linea ‘Fuera del if’ es mostrada, por que?, justamente porque esta fuera del If, al no usar ningun tipo de parentesis para marcar cual es el bloque que corresponde al if solo la primera linea es considerada. Si quiero entonces las dos lineas dentro del if debo hacerlo de la siguiente forma:
$valor = 5;
if( $valor == 8 ) {
echo 'Dentro del if';
echo 'Tambien dentro del if';
}
echo 'Fuera del if';
?>
Fuera del if
El uso de parentesis tambien es necesario en elseif y else cuando el bloque de codigo a ejecutar es de mas de una linea, por ejemplo:
En resumen, si el bloque de codigo bajo un if, elseif o else es de mas de una linea es necesario usar parentesis, si es de solo una linea los parentesis son opcionales. De esta forma los siguientes ejemplos son validos.
// Sin parentesis, se puede pues es una linea
if( condicion )
echo 'La condicion se cumple';
else
echo 'No se cumplio';
?>
// Con parentesis ya sea para una linea o varias
if( condicion ){
echo 'La condicion se cumple';
} else {
echo 'No se cumplio';
}
?>
// Otra forma de acomodar los parentesis
if( condicion )
{
echo 'La condicion se cumple';
}
else
{
echo 'No se cumplio';
}
?>
// Escribir en la misma linea
if( condicion ) echo 'La condicion se cumple';
else echo 'No se cumplio';
?>
// En la misma linea con parentesis
if( condicion ) { echo 'La condicion se cumple'; }
else { echo 'No se cumplio'; }
?>
// Combinado
if( condicion ) echo 'La condicion se cumple';
else {
echo 'No se cumple';
}
?>
Ustedes decidiran que forma les acomoda mas.
Una cosa mas a mencionar antes de terminar la entrada, es la sintaxis alternativa usando dos puntos. Con esta sintaxis no es necesario el uso de parentesis aunque el bloque tenga mas de una linea, pero si es necesario escribir ‘endif’ para cerrar la escructura if.
$hora = 21;
if( $hora < 12 ):
echo 'Buenos dias';
elseif( $hora < 20 ):
echo 'Buenas tardes';
else:
echo 'Buenas noches';
endif;
?>
Buenas noches
El resto es similar, por ejemplo puedo escribir el codigo a ejecutar justo despues de los dos puntos,
$hora = 21;
if( $hora > 12 ): echo 'Es mas de mediodia';
endif;
?>
Es mas de mediodia
Aqui termina esta entrada, bye.




May 16th, 2010 a las 10:54 pm
Una explicación completa y muy clara. Gracias. Continua publicando más sobre php por favor.
May 17th, 2010 a las 12:38 am
Gracias yummta, habia pensado remover las entradas de php y dedicarme solo a “ruby” agregando “ruby on rails” pero lo reconsiderare.
Saludos.