Académique Documents
Professionnel Documents
Culture Documents
Tema 5
Sentencias de Control
Autor
Ismael Chakroun Muoz (ismael@um.es)
pgina 1
Contenido
1
Sentencia IF............................................................................................................. 3
Sentencia WHILE................................................................................................... 5
Sentencias FOR....................................................................................................... 6
Sentencia FOREACH............................................................................................. 7
pgina 2
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
pgina 3
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
}
3 Sentencias IF..ELSEIF
elseif,
pgina 4
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
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
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
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
<?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
<?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
pgina 11