Vous êtes sur la page 1sur 11

Creacin de paginas web con PHP y MySql

Tema 5. Sentencias de Control

Tema 5
Sentencias de Control

Autor
Ismael Chakroun Muoz (ismael@um.es)

pgina 1

Creacin de paginas web con PHP y MySql

Tema 5. Sentencias de Control

Contenido
1

Sentencia IF............................................................................................................. 3

Sentencias IF..ELSE ............................................................................................... 4

Sentencias IF..ELSEIF ........................................................................................... 4

Sentencia WHILE................................................................................................... 5

Sentencias FOR....................................................................................................... 6

Sentencia FOREACH............................................................................................. 7

Sentencia SWITCH ................................................................................................ 8

require o include ..................................................................................................... 9

pgina 2

Creacin de paginas web con PHP y MySql

Tema 5. Sentencias de Control

1 Sentencia IF
La construccin if es una de las ms importantes caractersticas de muchos lenguajes,
incluido PHP. Permite la ejecucin condicional de fragmentos de cdigo.
Cuando queremos que el programa, llegado a un cierto punto, tome un camino concreto
en determinados casos y otro diferente si las condiciones de ejecucin difieren, nos
servimos del conjunto de instrucciones if, else y elseif. La estructura de base de este tipo
de instrucciones es la siguiente:
if (expr)
sentencia
Como se describe en la seccin sobre expresiones, expr se evala a su valor condicional.
Si expr se evala como TRUE, PHP ejecutar la sentencia, y si se evala como FALSE la ignorar.
El siguiente ejemplo mostrara a

es mayor que b

si $a fuera mayor que $b:

if ($a > $b)


print "a es mayor que b";
A menudo, se desea tener ms de una sentencia ejecutada de forma condicional. Por
supuesto, no hay necesidad de encerrar cada sentencia con una clusula if. En vez de
eso, se pueden agrupar varias sentencias en un grupo de sentencias. Por ejemplo, este
cdigo mostrara a es mayor que b si $a fuera mayor que $b, y entonces asignara el
valor de $a a $b:
if ($a > $b) {
print "a es mayor que b";
$b = $a;
}
Las sentencias if se pueden anidar indefinidamente dentro de otras sentencias if, lo cual
proporciona una flexibilidad completa para ejecuciones condicionales en las diferentes
partes de tu programa.

pgina 3

Creacin de paginas web con PHP y MySql

Tema 5. Sentencias de Control

2 Sentencias IF..ELSE
A menudo queremos ejecutar una sentencia si se cumple una cierta condicin, y una
sentencia distinta si la condicin no se cumple. Esto es para lo que sirve else. else
extiende una sentencia if para ejecutar una sentencia en caso de que la expresin en la
sentencia if se evale como FALSE. Por ejemplo, el siguiente cdigo mostrara a es
mayor que b si $a fuera mayor que $b, y a NO es mayor que b en cualquier otro
caso:
if (condicin) {
Este bloque se ejecuta si la condicin es VERDADERA
} else {
Este boque se ejecuta si la condicin es FALSA
}

La sentencia IF...ELSE permite ejecutar un bloque de instrucciones si la condicin es


Verdadera y otro bloque de instrucciones si sta es Falsa. Es importante tener en
cuenta q instrucciones si sta es Falsa. Es importante tener en cuenta que la condicin
que evaluemos ha de estar encerrada entre parntesis (esto es aplicable a todas la
sentencias de control).
Existe una forma sencilla de usar la sentencia IF cuando no tenemos que usar el ELSE y
solo tenenemos que ejecutar una lnea de cdigo.
if ($a > 4) echo "$a es mayor que 4";

3 Sentencias IF..ELSEIF
elseif,

como su nombre sugiere, es una combinacin de if y else. Como else,


extiende una sentencia if para ejecutar una sentencia diferente en caso de que la
expresin if original se evala como FALSE. No obstante, a diferencia de else, ejecutar
esa expresin alternativa solamente si la expresin condicional elseif se evala como
TRUE. Por ejemplo, el siguiente cdigo mostrara a es mayor que b, a es igual a b o a es
menor que b:
La sentencia IF...ELSEIF...ELSE permite ejecuta varias condiciones en cascada.
if ($a > $b) {

print "a es mayor que b";


} elseif ($a == $b) {
print "a es igual que b";
} else {

pgina 4

Creacin de paginas web con PHP y MySql

Tema 5. Sentencias de Control

print "a es mayor que b"; }

Vemos otro ejemplo:

if ($nombre == ""){
echo "T no tienes nombre";
} elseif (($nombre=="eva") OR ($nombre=="Eva")) {
echo "
echo "Tu nombre es EVA";<
} else {
echo "Tu nombre es " . $nombre;
}

4 Sentencia WHILE
Sin duda el bucle ms utilizado y el ms sencillo. Lo usamos para ejecutar las
instrucciones contenidas en su interior siempre y cuando la condicin definida sea
verdadera. La estructura sintctica es la siguiente.
while (condicin)
{
instruccion1;
instruccion2;
...
}

Ejemplo sencillo:

<?php
$num = 1;
while ($num < 5) {
echo $num;
$num++
}
?>

pgina 5

Creacin de paginas web con PHP y MySql

Tema 5. Sentencias de Control

Podemos romper un bucle WHILE utilizando la sentencia BREAK.


<?php
$num = 1;
while ($num < 5) {
echo $num;
if ($num == 3){
echo "Aqu nos salimos \n";
break
}
$num++
}
?>

Mas adelante iremos viendo mas ejemplos de este bucle. En cada uno de los temas lo
iremos utilizando para una cosa diferente.

5 Sentencias FOR
PHP est provisto de otros tipos de bucle que tambin resultan muy prcticos en
determinadas situaciones. El ms popular de ellos es el bucle for que, como para los
casos anteriores, se encarga de ejecutar las instrucciones entre llaves. La diferencia con
los anteriores radica en cmo se plantea la condicin de finalizacin del bucle. Para
aclarar su funcionamiento vamos a expresar el ejemplo de bucle while visto en el
captulo anterior en forma de bucle for:

for (expr1,expr2,expr3) {
sentencias;
}
La primera expresin cumple la funcin de inicializar las variables de control del FOR.
Esta expresin se cumple incondicionalmente, ms all de que se entre dentro del ciclo
o no.

pgina 6

Creacin de paginas web con PHP y MySql

Tema 5. Sentencias de Control

La expresin 2 se evala siempre que se este por ingresar al ciclo del FOR, an cuando
se ingresa al for por primera vez.
La tercera expresin se ejecuta cada vez que se termina el ciclo. Por lo general se utiliza
esta expresin para indicar el incremento de alguna variable que se este utilizando para
el FOR. La ejecucin de esta expresin es tambin incondicional y es la que se ejecuta
inmediatamente antes de evaluarse la expresin 2.

Ejemplo:

for ($i=0;$i<5;$i++) {
print($i);
}

El bucle FOR no es estrictamente necesario, cualquier bucle FOR puede ser sustituido
fcilmente por otro WHILE. Sin embargo, el bucle FOR resulta muy til cuando
debemos ejecutar un bloque de cdigo a condicin de que una variable se encuentre
entre un valor mnimo y otro mximo. El bucle FOR tambin se puede romper mediante
la sentencia BREAK.
Otra sentencia a veces muy util es : continue. Sirve para saltar a la iteracin
siguiente. La sentencia contraria a esta es break que sirve para escapar del bucle.

<?php
for ($num = 1; $num <=5; $num++){
echo $num;
if ($num == 3){
echo "Aqu nos salimos \n";
break
}
}
?>

6 Sentencia FOREACH
Este bucle, implementado en las versiones de PHP4, nos ayuda a recorrer los valores de
un array lo cual puede resultar muy til por ejemplo para efectuar una lectura rpida del
mismo. Recordamos que un array es una variable que guarda un conjunto de elementos
(valores) catalogados por claves.

pgina 7

Creacin de paginas web con PHP y MySql

Tema 5. Sentencias de Control

La estructura general es la siguiente:


Foreach ($array as $clave=>$valor)
{
instruccion1;
instruccion2;
;
}

Un ejemplo prctico es la lectura de un array lo cual podra hacerse del siguiente modo:
<?
$moneda=array("Espaa"=> "Peseta","Francia" => "Franco","USA" => "Dolar");
Foreach ($moneda as $clave=>$valor)
{
echo "Pais: $clave Moneda: $valor<br>";
}
?>

Resultado
Pais: Espaa Moneda: Peseta
Pais: Francia Moneda: Franco
Pais: USA Moneda: Dolar

7 Sentencia SWITCH
Una alternativa a IF...ELSEIF...ELSE, es la sentencia SWITCH, la cul evala y
compara cada expresin de la sentencia CASE con la expresin que evaluamos, si
llegamos al final de la lista de CASE y encuentra una condicin Verdadera , ejecuta el
cdigo de bloque que haya en DEFAULT. Si encontramos una condicin verdadera
debemos ejecutar un BREAK para que la sentencia SWITCH no siga buscando en la
lista de CASE. Veamos un ejemplo.
Explicacin ms detallada:
Cuando el valor de la variable ($variable) coincide con el valor de algn case, se
ejecutan las sentencias que se encuentran a continuacin.
En este caso se utiliza la sentencia break en forma prcticamente obligatoria, porque
en caso de no existir esta sentencia se seguira ejecutando linealmente todas las
sentencias continuas, es decir las sentencias de los dems cases inferiores.
Por ltimo, la opcin default se utiliza generalmente para cuando el valor de la
variable no coincide con ningn case. Estas sentencias se ejecutan siempre, salvo en
el caso de que se ejecute antes un break.

Ejemplo practico:

pgina 8

Creacin de paginas web con PHP y MySql

Tema 5. Sentencias de Control

<?php
switch ($dia) {
case "Lunes":
echo "Hoy es Lunes";
break;
case "Martes":
echo "Hoy es Martes";
break;
case "Miercoles":
echo "Hoy es Miercoles";
break;
case "Jueves":
echo "Hoy es Jueves";
break;
case "Viernes":
echo "Hoy es Viernes";
break;
case "Sbado":
echo "Hoy es Sbado";
break;
case "Domingo":
echo "Hoy es Domingo";
break;
default:
echo "Esa cadena no corresponde a ningn da de la semana";
}
?>

8 require o include
Cmo ahrranos lneas de cdigo
En las lecciones anteriores hemos aprendido el uso bsico de las funciones de PHP para
trabajar con MySQL. En esta leccin y sucesivas vamos a ver nuevas funciones que nos
facilitan y potencian nuestras pginas web.
Por lo general, todos nuestros script tienen partes de cdigo iguales, las funciones
include() y require() nos van ahorrar muchas de estas lneas de cdigo. Ambas
funciones hacen una llamada a un determinado fichero pero de dos maneras diferentes,
con include(), insertamos lo que contenga el fichero que llamemos de manera literal en
nuestro script, mientras que con require(), le decimos que el script necesitar parte de
cdigo de se encuentra en el fichero que llama require().
Como todo esto es un poco lioso, veamos unos ejemplos que nos lo aclara.

pgina 9

Creacin de paginas web con PHP y MySql

Tema 5. Sentencias de Control

<?php
include ("header.inc");
echo "Hola Mundo";
include ("footer.inc");
?>
Si tenemos encuenta que el fichero header.inc contiene:
<html>
<body>
y el fichero footer.inc contiene:
</body>
</html>
Nuestro script sera equivalente a:
<html>
<body>
<?php
<?php
echo "Hola Mundo";
?>
</body>
</html>
Ahora veamos el script de ejemplo para la funcin require():
<?php
require ("config.inc");
include ("header.inc");
echo $cadena;
include ("footer.inc");
?>

pgina 10

Creacin de paginas web con PHP y MySql

Tema 5. Sentencias de Control

Donde el fichero config.inc tendra algo como sto:


<?php
$cadena = "Hola Mundo";
?>

pgina 11

Vous aimerez peut-être aussi