Control del flujo en PHP: Condiciones IF
Presentamos una de las herramientas principales usadas para controlar el flujo de nuestros scripts: Los condicionales IF.
01/1/70 - La programación exige en muchas ocasiones la repetición de acciones sucesivas o la elección de una determinada secuencia y no de otra dependiendo de las condiciones específicas de la ejecución.
Como ejemplo, podríamos hacer alusión a un script que ejecute una secuencia diferente en función del día de la semana en el que nos encontramos.
Este tipo de acciones pueden ser llevadas a cabo gracias a una paleta de instrucciones presentes en la mayoría de los lenguajes. En este capítulo describiremos someramente algunas de ellas propuestas por PHP y que resultan de evidente utilidad.
Para evitar el complicar el texto, nos limitaremos a introducir las más importantes dejando de lado otras cuantas que podrán ser fácilmente asimilables a partir de ejemplos prácticos.
Las condiciones if
Cuando queremos que el programa, llegado a un cierto punto, tome un camino concreto en determinados casos y otro diferente si las condiciones de ejecución difieren, nos servimos del conjunto de instrucciones if, else y elseif. La estructura de base de este tipo de instrucciones es la siguiente:
if (condición)
{
Instrucción 1;
Instrucción 2;
...
}
else
{
Instrucción A;
Instrucción B;
...
}
|
Llegados a este punto, el programa verificará el cumplimiento o no de la condición. Si la condición es cierta las instrucciones 1 y 2 serán ejecutadas. De lo contrario (
else), las instrucciones A y B serán llevadas a cabo.
Esta estructura de base puede complicarse un poco más si tenemos cuenta que no necesariamente todo es blanco o negro y que muchas posibilidades pueden darse. Es por ello que otras condiciones pueden plantearse dentro de la condición principal. Hablamos por lo tanto de condiciones anidadas que tendrían una estructura del siguiente tipo:
if (condición1)
{
Instrucción 1;
Instrucción 2;
...
}
else
{
if (condición2)
{
Instrucción A;
Instrucción B;
...
}
else
{
Instrucción X
...
}
}
|
De este modo podríamos introducir tantas condiciones como queramos dentro de una condición principal.
De gran ayuda es la instrucción
elseif que permite en una sola línea introducir una condición adicional. Este tipo de instrucción simpifica ligeramente la sintaxis que acabamos de ver:
if (condición1)
{
Instrucción 1;
Instrucción 2;
...
}
elseif (condición2)
{
Instrucción A;
Instrucción B;
...
}
else
{
Instrucción X
...
}
|
El uso de esta herramienta resultará claro con un poco de práctica. Pongamos un ejemplo sencillo de utilización de condiciones. El siguiente programa permitiría detectar la lengua empleada por el navegador y visualizar un mensaje en dicha lengua.
<HTML>
<HEAD>
<TITLE>Detector de Lengua</TITLE>
</HEAD>
<BODY>
<?
//Antes de nada introducimos mensajes en forma de variables
$espanol="Hola";
$ingles="Hello";
$frances="Bonjour";
//Ahora leemos del navegador cuál es su lengua oficial
$idioma=substr($HTTP_ACCEPT_LANGUAGE,0,2);
//Formulamos las posibilidades que se pueden dar
if ($idioma == "es")
{echo "$espanol";}
elseif ($idioma=="fr")
{echo "$frances";}
else
{echo "$ingles";}
?>
</BODY>
</HTML>
|
Para poder ver el funcionamiento de este script es necesario cambiar el idioma preferido lo cual puede ser realizado a partir del menú de opciones del navegador.
Para leer la lengua aceptada por el navegador lo que hacemos es definir una variable (
$idioma) y, mediante la función
substr, recogemos las dos primeras letras del código correspondiente al idioma aceptado por el navegador ($HTTP_ACCEPT_LANGUAGE).
La tercera parte de script se encarga de ver si el navegador está en español (es), francés (fr) o en cualquier otro idioma que no sea ninguno de estos dos y de imprimir el mensaje que proceda en cada caso.
A notar que, cuando se trata de comparar variables, ponemos un doble igual "==" en lugar de un simple "=". Este último queda reservado exclusivamente para asignar valores a variables
Seguir navegando a partir aquí:
+ 1 manual relacionado
+ 1 categoria relacionada
+ 10 comentarios (Añadir)
+ 8 comentarios no revisados
| Autoría, licencia y acciones sobre este artículo |
|
Informe de Rubén Alvarez*
Atención: Contenido exclusivo de DesarrolloWeb.com. No reproducir. Copyright.
* Para consultas técnicas utilizar la lista de correo.
|
Manuales relacionados con este artículo
Categorias relacionadas
A través de las categorías de nuestro directorio se pueden encontrar otro tipo de recursos relacionados con este artículo:
+ Entrar en
Manuales de PHP
Comentarios de los visitantes
|
Los comentarios de los visitantes son para ampliar la información del artículo. Cualquiera puede participar.
|
| Se muestran 10 comentarios revisados |
Comentario de Nacho
06/5/03
Me gustaría felicitaros por el curso; es claro, sencillo y muy útil. También deciros que tras muchas pruebas no consigo hacer funcionar el script IF detector de lengua. He probado a copiar y pegar pero siempre aparece el mismo error:
Notice: Undefined variable: HTTP_ACCEPT_LANGUAGE in D:\Archivos de programa\Apache Group\Apache2\htdocs\curso_php\prueba.php on line 12
Hello
Un saludo,
Nacho
Comentario de Anónimo
21/6/03
Hola!, he probado el codigo tal cual está en la página y me he dado cuenta q si no activo 'register_globals' no funciona ninguna variable local, como $HTTP_ACCEPT_LANGUAGE o $PHP_SELF. El caso es que activarlo puede llevar a problemas de seguridad, como he leido en otros comentarios.
Comentario de zamy57
05/7/03
si tienes 'register_globals=off' usa $HTTP_SERVER_VARS['PHP_SELF'] Y
$HTTP_SERVER_VARS["HTTP_ACCEPT_LANGUAGE"] respectivamente
Comentario de Alfonso
24/5/04
Hola chicos. Tal como comenta algún con un copy/empastre el código no funciona. Pues bien, aunque ya dan pistas en las lineas de arriba de cómo solucionar esto, os envio el código para que todos podamos hacer nuestro querido COPY/EMPASTRE
<HTML>
<HEAD>
<TITLE>Detector de Lengua</TITLE>
</HEAD>
<BODY>
<?
//Antes de nada introducimos mensajes en forma de variables
$espanol="Hola";
$ingles="Hello";
$aleman="Hallo";
//Ahora leemos del navegador cuál es su lengua oficial
$idioma=substr($_SERVER['HTTP_ACCEPT_LANGUAGE'],0,2);
//Formulamos las posibilidades que se pueden dar
if ($idioma == "es")
{echo "$espanol";}
elseif ($idioma=="de")
{echo "$aleman";}
else
{echo "$ingles";}
?>
</BODY>
</HTML>
Comentario de Pedro
08/3/05
bueno, primero felicitaros por este manual que, por lo que veo, a tantos nos ha ayudado...
segundo, y no por eso menos importante, ahí va mi duda:
como hago para realizar un if complejo?, es decir:
if (i==1 AND e==2 AND x==3){
// haces esto
} else {
// haces quello
}
Gracias de antemano...
Comentario de Ghostfaced
05/5/05
Hola Pedro,no sé si has resuelto ya tu duda, pero te contestas tu mismo cuando escribes la estructura condicional, está bien definida.
Saludos.
Comentario de javi
19/10/05
<?php
$var1 = 1;
$var2 = 1;
$var3 = 1;
if($var1 = 1 && $var2 = 1 && $var3 = 1)
{
echo("if complejo!");
//aqui tienes la solucion!
}
?>
Comentario de geek
14/3/06
humm
<?php
$var1 = 1;
$var2 = 1;
$var3 = 1;
if($var1 == 1 && $var2 == 1 && $var3 == 1)
{
echo("if complejo!");
//aqui tienes la solucion!
}
?>
el escript es correcto de las dos maneras pero de esta se compara el valor de las variables con 1.
de la manera que ha puesto javi se asigna el valor uno a la variable, lo cual siempre es cierto.
mucho cuidado con la diferencia entre
asignacion =
y comparacion ==
que es una de las cosas que mas errores inducen en los programadores noveles y los no tan noveles
Comentario de Adrian
15/5/06
Asi como es bueno saber como se utiliza el AND tambien es bueno saber como se utiliza el OR
($aaa==1 OR $aaa==3 OR $aaa==5)
Comentario de Elfakyu
15/11/06
para comparar usa ==
ya que para asignar se usa =
| Comentarios sin revisar |
|
Entre los comentarios no revisados puede haber algunos interesantes que se hayan enviado recientemente.
|
Se han encontrado 8 comentarios sin revisar
Ir arriba