You are on page 1of 9

Curso Básico de Programación en Lenguaje PHP

Página 1

1.I Notación. Tipos de datos:

Como es bien sabido, las variables son piezas básicas en el juego de la programación. Se trata del almacén que contiene nuestros datos, y que nosotros etiquetamos con un nombre. Una regla que debemos respetar es la siguiente: todos los nombres de las variables deben empezar con el carácter $. Pero esta no es la única. Al igual que en otros lenguajes, un nombre válido de variable puede ser cualquier combinación de letras y/o números (incluyendo caracteres ASCII del 127 al 255) siempre y cuando el nombre de la variable comience por una letra o por el carácter subrayado. Por tanto, $_MiVariable y $MiVariable son nombres válidos de variables, pero $3MiVariable no lo es.

A pesar de que al declarar una variable no le estamos asignando un tipo, la variable será del tipo de dato que le asignemos en cada momento. Esto no significa que no existan los tipos de datos en PHP, sí que existen: números enteros (int, integer), números reales (float, real, double), cadenas (string), arrays (array) y objetos (object).

Además, podemos realizar una conversión de tipo antes de asignar el resultado a una variable, utilizando para ello moldes. Los moldes no son más que el nombre del tipo entre paréntesis, antepuesto a la variable cuyo tipo queremos forzar con el molde. Por ejemplo, si a una variable queremos asignarle un cociente que seguro que tiene decimales, pero sólo buscamos su parte entera, bastaría con hacer:

$Variable = (int)(18/4);
$Variable = (int)(18/4);

Veamos un sencillo ejemplo de uso de variables:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<HTML>
<HEAD>
<TITLE> </TITLE>
</HEAD>
<BODY BGCOLOR=white>
<?php
$UnaVariable = "Le asignamos un texto y la mostramos<P>";
echo "Valor de la variable: " . $UnaVariable;
/* Y ahora le asignamos un número y lo mostramos también */
$UnaVariable = 27;
echo "Valor de la variable: " . $UnaVariable;
?>
</BODY>
</HTML>

En este ejemplo nos anticipamos un poco al punto de los operadores: como podemos comprobar si ejecutamos el ejemplo, con el punto (.) concatenamos cadenas.

1.II Constantes Una constante es un trozo de memoria que contendrá un valor fijo que asignaremos al principio. En PHP, para definir una constante tenemos la función:

define("CONSTANTE", valor);
define("CONSTANTE", valor);

Como se ve, el nombre que queramos darle a la constante debe ir entre comillas. Por ejemplo, si queremos definir una constante famosa como el número PI, podremos hacer:

define("PI", 3.1515926);
define("PI", 3.1515926);

dentro de nuestro código PHP. Además, podremos usar tranquilamente el nombre de esa constante para usar su valor. Por ejemplo, si queremos calcular el valor de 2PI, podremos escribir:

$Variable = 2*PI;
$Variable = 2*PI;

sin necesidad de volver a poner el valor de PI, pues lo tenemos definido en una constante.

Por otra parte, antes de usar una constante que no estemos seguros si existe o no, podríamos comprobar mediante alguna función que esté definida. Para ello tenemos la función defined, a la que le pasamos como argumento el nombre de la constante, entre comillas, y ella nos dirá si está definida o no lo está.

Curso Básico de Programación en Lenguaje PHP

Página 2

1.III Funciones para variables Dado que una variable no necesita estar declarada, al contrario de lo que sucede en los lenguajes de programación usuales como C y Pascal, podría darse el caso de que intentemos acceder al contenido de una variable que no haya sido especificada hasta el momento y que, por tanto, no estará inicializada. Para prevenir posibles errores a consecuencia de este hecho, tenemos una función, llamada isset , que nos informa acerca de si la variable que le pasamos como argumento está definida o no. Su sintaxis es:

isset(Variable_Cualesquiera);
isset(Variable_Cualesquiera);

que devuelve cierto si la variable existe y está definida, y falso si no es así.

Hay una función similar a esta que funciona justo al revés, se trata de empty, que nos informa si la variable que le pasamos como argumento está vacía o no definida, en cuyo caso devolverá cierto, y si la variable existe y tiene un valor, devolverá falso. Su sintaxis es:

empty(Variable_Cualesquiera);
empty(Variable_Cualesquiera);

Es interesante en ciertas ocasiones verificar si una variable es del tipo que uno espera que sea, para lo que tenemos la familia de funciones is_XXXXXX(Variable). Esta familia está formada por las funciones is_array, is_double, is_float, is_int, is_integer, is_object, is_real, is_string; estas funciones devuelven cierto si la variable pasada como argumento es, en cada una, un array, o un double, o u float, o un int, o un integer, o un object, o un real, respectivamente. En caso contrario, devuelven falso.

Por otra parte, PHP nos ofrece unas funciones que convierten una cadena a entero o a real, y viceversa; estas son:

doubleval(VariableCualesquiera); intval(VariableCualesquiera); strval(VariableCualesquiera);Por ejemplo, si hacemos:
doubleval(VariableCualesquiera);
intval(VariableCualesquiera);
strval(VariableCualesquiera);Por ejemplo, si hacemos:
$Var1 = "123.4567ert43";
$Var2 = doubleval($Var1);
$Var3 = intval($Var1);

tendremos en $Var2 almacenado el valor 123.4567, y en $Var3 estará almacenado el valor 123.

Otras funciones de utilidad son estas:

settype(VariableCualesquiera, TipoDato); gettype(VariableCualesquiera); unset(VariableCualesquiera);
settype(VariableCualesquiera, TipoDato);
gettype(VariableCualesquiera);
unset(VariableCualesquiera);

La primera de ellas nos permite asignar un tipo a una variable. Este tipo será uno de los comentados, escrito entre comillas a la hora de llamar a la función. Por ejemplo,

settype($a, "integer");
settype($a, "integer");

fijaría el tipo de la variable $a a un integer. Además, devuelve cierto si la conversión ha sido realizada con éxito, y falso en caso contrario.

La segunda nos da, en una cadena, el tipo de variable que nosotros le pasamos como argumento.

Por último, con unset podemos eliminar variables que no usemos para evitar gasto innecesario de memoria.

Vamos a resumir todo lo visto hasta ahora con un ejemplo:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<HTML>
<HEAD>
<TITLE> </TITLE>
</HEAD>
<BODY BGCOLOR=white>
<?php
$Variable1 = 18/4;
$Variable2 = (int)(18/4);
print((float)($Variable1) . ", " . $Variable2 . "<P>");
if(isset($Variable89)) print($Variable89);
else print("No está asignado valor alguno a \$Variable89<P>");

Curso Básico de Programación en Lenguaje PHP

Página 3

print("Tipo de la variable \$Variable1: " . gettype($Variable1) . "<BR>"); print("Tipo de la
print("Tipo de la variable \$Variable1: " . gettype($Variable1) . "<BR>");
print("Tipo de la variable \$Variable2: " . gettype($Variable2) . "<P>");
define("PI", 3.1415926);
$Variable3 = 2*PI;
print("Valor de 2PI: " . $Variable3 . "<P>");
if (defined("UnaConstante")) ;
else print("Constante \"UnaConstante\" no definida<P>");
$a = 12.3;
print(strval($a)."<P>");
$Var1 = "123.4567ert43";
$Var2 = doubleval($Var1);
$Var3 = intval($Var1);
print("Contenido de \$Var1: " . $Var1 . "<BR>");
print("Contenido de \$Var2: " . $Var2 . "<BR>");
print("Contenido de \$Var3: " . $Var3 . "<P>");
if(settype($Var1, "integer")) print("Conversión exitosa de tipo");
else print("No se pudo realizar la conversión");
?>
</BODY>
</HTML>

1.IV Ámbito de las variables

Por ámbito de una variable suele entenderse aquella parte del código en la que esta variable es visible. En los lenguajes clásicos, el ámbito de una variable suele ser el de la función o procedimiento en el que se define (una variable local de una función no podrá ser vista por otra función), o bien son variables globales (variables accesibles por cualquier función y/o procedimiento). El contenido de las variables permanecerá mientras se ejecute la función (caso de las locales) o bien durante toda la ejecución del programa, si se trata de variables globales. En PHP esto no es así, por el motivo siguiente: cuando se ha ejecutado el script y el resultado es devuelto al cliente, el programa ya no está en memoria alguna, así que cuando el programa ha sido interpretado, se ha perdido todo el contenido de las variables que utilizara.

Por este motivo, si queremos usar variables entre varias páginas, debemos pasarlas de unas a otras de forma explícita, incluso cuando se trata de la propia página. Lo que sí es cierto es que, mientras se está ejecutando el programa en el servidor, existe un ámbito para las variables que usamos.

Cada una de las variables existe en el contexto en el que fue definida: bien en el programa principal, bien en una función. No obstante, disponemos de unos modificadores que nos permiten alterar este comportamiento:

global: Nos dice que la variable es global. En este caso, si se utiliza en una función, el valor que tenga al finalizar la ejecución se conservará en el programa principal.

static: Nos dice que una variable local conservará su valor en sucesivas llamadas a la función en la que está definida.

Vamos a matizar el uso de variables globales porque es algo que en PHP queda un poco confuso. Si estás leyendo esto y no sabes nada sobre funciones, te recomiendo que te informes primero de qué es una función y cómo se declaran, porque necesito este concepto.

Declarar una variable fuera de cualquier función la convierte en global, mientras que si declaramos una variable dentro de una función, esa variable es local a la función. Ahora bien, si queremos, dentro de una función, usar una variable global, tenemos dos posibilidades. La primera es declarar esa variable global como global dentro de la propia función; la segunda, usando el array interno $GLOBALS. Vamos a ver un ejemplo de cada una de las opciones para terminar de aclararlo.

¿Qué pasaría con este trozo de código?

<?php $aGlobal = '1234'; function Imprime_aGlobal() { echo $aGlobal; } Imprime_aGlobal();
<?php
$aGlobal = '1234';
function Imprime_aGlobal() {
echo $aGlobal;
}
Imprime_aGlobal();

Curso Básico de Programación en Lenguaje PHP

Página 4

?>
?>

Hemos declarado $aGlobal como global, pues está fuera del ámbito de cualquier función. En otros lenguajes de programación, el resultado sería que se imprime el valor '1234', pero en PHP no. ¿Por qué? Porque en PHP, una función únicamente ve a sus variables locales. Como no se ha declarado previamente, dentro de la función Imprime_aGlobal , la variable $aGlobal, ésta está sin definir y, por tanto, no tiene valor alguno. Para que la función "vea" a las variables globales, es cuando tenemos dos opciones: o volvemos a declarar dentro de la función la variable global con el modificador global, o usamos el array $GLOBALS.

Con la primera opción, el código correcto quedaría como sigue:

<?php $aGlobal = '1234'; function Imprime_aGlobal() { global $aGlobal; echo $aGlobal; }
<?php
$aGlobal = '1234';
function Imprime_aGlobal() {
global $aGlobal;
echo $aGlobal;
}
Imprime_aGlobal();
?>

Y con la segunda opción, tendríamos:

<?php $aGlobal = '1234'; function Imprime_aGlobal() { echo $GLOBALS["aGlobal"]; }
<?php
$aGlobal = '1234';
function Imprime_aGlobal() {
echo $GLOBALS["aGlobal"];
}
Imprime_aGlobal();
?>

El array $GLOBALS es mantenido por el propio intérprete de PHP, y aparte de las variables que nosotros declaremos como globales, tiene muchas otras internas que podeis consultar en el manual en PDF que podeis descargar de la web oficial de PHP.

1.V Tiempo de vida de las variables

Ya hemos comentado que el valor de las variables se pierde en cuanto la página es interpretada y el resultado devuelto al cliente. Vamos a ponerlo de manifiesto con un ejemplo: el siguiente programa dará valor a una variable, y la mostrará antes y después de asignarle este valor. Para probar su efectividad, recargaremos la página, y comprobaremos que antes de asignarle un valor, no está definida, puesto que el valor que tuvo se perdió cuando el servidor devolvió la página.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<HTML>
<HEAD>
<TITLE> Tiempo de vida </TITLE>
</HEAD>
<BODY BGCOLOR=white>
<?php
print("Se acaba de cargar la página.<BR>".
"¿Tiene asignado valor alguno?<BR>");
if(isset($Variable))
print("Sí tiene un valor asignado, ".$Variable."<P>");
else
print("<DIV ALIGN=RIGHT>No tiene un valor asignado</DIV><P>");
$Variable = 12;
print("Ahora le asignamos un valor. La variable vale: ".
$Variable."<P>");
?>
</BODY>
</HTML>

Veremos cómo solucionar este problema, pues es posible pasar el valor de las variables entre páginas, incluyéndose a sí misma.

1.VI Variables variables

Las variables variables son una característica muy interesante de PHP. La idea es la siguiente: imaginad que

Curso Básico de Programación en Lenguaje PHP

Página 5

tenemos una variable cuyo valor sea una cadena que formara un nombre válido de variable. Podríamos usar esta cadena como nombre para otra variable. ¿Cómo?

Vamos a suponer que tenemos una variable con el siguiente contenido:

$MiVariable = 'UnValor';
$MiVariable = 'UnValor';

Si ahora hacemos esto:

$$MiVariable = 'Qué será, será';
$$MiVariable = 'Qué será, será';

Podemos, por ejemplo, escribir la sentencia:

echo $MiVariable . ' - ' . $UnValor;
echo $MiVariable . ' - ' . $UnValor;

El resultado será que se imprimirá la cadena:

UnValor - Qué será, será
UnValor - Qué será, será

Ahora he de comentar una nota para resolver una posible ambigüedad. Para ello, he de tocar el tema de los arrays. Si no sabes qué es un array, entonces espera a llegar a ese apartado para volver aquí. Si ya has trabajado con arrays, puedes seguir leyendo.

Imaginemos que tenemos un array llamado UnArray, y que en la posición 1 del array tenemos: $UnArray[1] = 'OtroNombre'. Entonces, ¿qué es $$UnArray[1]?. Porque puede ser que OtroNombre sea otro array, con lo que el intérprete no sabría qué hacer. Para resolver la posible ambigüedad, entenderemos que ${$UnArray[1]} es una variable simple, la variable $OtroNombre, mientras que ${$UnArray}[1] es lo mismo que escribir $OtroNombre[1], es decir, en este caso $OtroNombre resultaría ser otro array y estamos accediendo a su primer elemento.

2.I Operadores: qué son Los operadores son símbolos que denotan operaciones que pueden realizarse entre elementos llamados operandos. Si tenemos un operador, léase # (por no poner uno conocido que confunda), que sabe operar con dos operandos, entonces $a # $b debe entenderse como el resultado de operar $a con $b según lo que indique la operación #. Por ejemplo, + es un operador que admite dos operandos y tal que el resultado de hacer $a + $b es el resultado de sumar $a y $b.

El operador más básico es el operador binario de asignación, =. Si escribimos en el código $a = $b, estamos asignando a $a el contenido de $b en ese momento.

Curso Básico de Programación en Lenguaje PHP

Página 6

Veamos un ejemplo:

<HTML> <HEAD></HEAD> <BODY> <?php $a = 4; $b = 3; echo 'Valor de a: '
<HTML>
<HEAD></HEAD>
<BODY>
<?php
$a = 4;
$b = 3;
echo 'Valor de a: ' . $a . '<BR>Valor de b: ' . $b . '<P>';
$a = $b;
echo 'Valor de a: ' . $a . '<BR>Valor de b: ' . $b;
?>
</BODY>
</HTML>

En el ejemplo podemos ver también el uso del operador

operador . tiene el significado "concatenación". Por ejemplo, si escribimos

Resulta que cuando estamos utilizando cadenas, el

$Cadena = "Suma" . " de " . "cadenas";
$Cadena = "Suma" . " de " . "cadenas";

es lo mismo que si hubiéramos escrito

$Cadena = "Suma de cadenas";
$Cadena = "Suma de cadenas";

2.II Operadores: aritméticos Los operadores aritméticos son binarios (necesitan dos operandos), y realizan sobre sus operandos alguna de las operaciones aritméticas conocidas. En concreto, tenemos:

+ Suma - Resta * Producto / Cociente % Módulo
+
Suma
-
Resta
*
Producto
/
Cociente
%
Módulo

En PHP tenemos una versión especial, heredada del lenguaje C, que junta el operador de asignación con los vistos aquí:

+= $b += 3 $b -= 3 $b *= 3 $b /= 3 $b %=
+=
$b += 3
$b -= 3
$b *= 3
$b /= 3
$b %= 3
equivale a
-=
equivale a
*=
equivale a
/=
equivale a
%=
equivale a
$b = $b + 3
$b = $b - 3
$b = $b * 3
$b = $b / 3
$b = $b % 3

Además, heredados también del lenguaje C, tenemos los incrementos y decrementos: ++ y --. Notar que, si tenemos definidas dos variables, por ejemplo $Variable1 y $Variable2, no es lo mismo hacer esto:

$Variable1 y $Variable2 , no es lo mismo hacer esto: que hacer esto: $Variable2 = 20;

que hacer esto:

$Variable2 = 20; $Variable1 = ++$Variable2;
$Variable2 = 20;
$Variable1 = ++$Variable2;

pues en el primer caso se realiza primero la asignación y después el incremento (con lo que tendremos que $Variable1=20, $Variable2=21); en el segundo caso se realiza primero el incremento y después la asignación, así que ambas valdrían lo mismo.

Por último, dentro de los operadores aritméticos tenemos el operador unario -, que aplicado delante de una variable,

le cambia el signo.

A continuación vemos algunos ejemplos de operaciones y su resultado:

<HTML> <HEAD></HEAD> <BODY> <?php /* Partimos de dos variables, '$a' y
<HTML>
<HEAD></HEAD>
<BODY>
<?php
/* Partimos de dos variables, '$a' y '$b', y vamos a realizar
distintas operaciones con ellas */
$a = 10;
$b = 6;
echo 'a
.
echo 'a + b = ' . ($a + $b) . '<BR>';
echo 'a - b = ' . ($a - $b) . '<BR>';
echo 'a * b = ' . ($a * $b) . '<BR>';
echo 'a / b = ' . ($a / $b) . '<BR>';
=
'
.
$a
',
b
= ' . $b . '<P>';

Curso Básico de Programación en Lenguaje PHP

Página 7

echo 'a % b = ' . ($a % $b) . '<BR>'; echo 'a++ :
echo 'a % b = ' . ($a % $b) . '<BR>';
echo 'a++ : ' . ($a++) . '<P>';
/* Notar que aquí ya se ha incrementado '$a' */
echo '-a = ' . (-$a) . '<P>';
echo 'a += b : a = ' . ($a += $b) . '<BR>';
echo 'a %= b : a = ' . ($a %= $b) . '<BR>';
?>
</BODY>
</HTML>

2.III Operadores: comparación Los operadores de comparación son binarios y su resultado es un booleano (un valor de verdad). Nos permiten expresar si una relación de igualdad/desigualdad es cierta o falsa dados los operandos. Tenemos los siguientes:

== != igual distinto > mayor que < >= <= === menor que mayor o
==
!=
igual
distinto
>
mayor que
<
>=
<=
===
menor que
mayor o igual que
menor o igual que
igual en valor y tipo (PHP 4)

Veamos un sencillo ejemplo para aclarar conceptos:

<HTML> <HEAD></HEAD> <BODY> <?php /* Partimos de dos variables, '$a' y
<HTML>
<HEAD></HEAD>
<BODY>
<?php
/* Partimos de dos variables, '$a' y '$b', y vamos a realizar
distintas operaciones con ellas */
$a = 10;
$b = 6;
echo 'a
=
'
.
$a
.
',
b
= ' . $b . '<P>';
echo 'a == b : ' . ($a == $b) . '<BR>';
echo 'a != b : ' . ($a != $b) . '<BR>';
echo 'a &lt; b : ' . ($a < $b) . '<BR>';
echo 'a > b : ' . ($a > $b) . '<BR>';
echo 'a &lt;= b : ' . ($a <= $b) . '<BR>';
echo 'a >= b : ' . ($a >= $b) . '<P>';
$a = '6';
echo 'Ahora a = ' . $a . ' (tipo: ' . gettype ($a) . ')<BR>';
echo ' a === b : ' . ($a === $b) . '<P>';
$a = 6;
echo 'Ahora a = ' . $a . ' (tipo: ' . gettype ($a) . ')<BR>';
echo ' a === b : ' . ($a === $b);
?>
</BODY>
</HTML>

2.IV Operadores: lógicos Los operadores lógicos sirven para componer condiciones más simples por medio de las reglas de la y , o y no lógicas. Nos permiten expresar condiciones compuestas de las que queremos averiguar su valor de verdad.

&& (and) || (or) AND ('y' lógica) OR ('o' lógica) ! xor NOT ('no' lógica)
&&
(and)
||
(or)
AND ('y' lógica)
OR ('o' lógica)
!
xor
NOT ('no' lógica)
XOR ('o exclusiva' lógica)

Por ejemplo, si tenemos tres números, podemos querer saber si el primero es a la vez mayor que el segundo y el tercero, o si es mayor que alguno de ellos, o si no es mayor que ninguno. Con el adecuado uso de paréntesis, podemos agrupar como nos convenga las condiciones.

Veamos un ejemplo:

<HTML> <HEAD></HEAD> <BODY> <?php
<HTML>
<HEAD></HEAD>
<BODY>
<?php

Curso Básico de Programación en Lenguaje PHP

Página 8

/* Partimos de tres variables, 'a', 'b' y 'c', y vamos a realizar distintas operaciones
/* Partimos de tres variables, 'a', 'b' y 'c', y vamos a realizar
distintas operaciones con ellas */
$a = 10;
$b = 6;
$c = 11;
echo 'a
=
'
.
$a
.
',
b
=
'
. $b
.
',
c
=
'
. $c . '<P>';
echo '(a > b) && (a > c) : ' . (($a > $b) && ($a > $c)) . '<BR>';
echo '(a > b) && (a < c) : ' . (($a > $b) && ($a < $c)) . '<BR>';
echo '!(a < b) : ' . !($a < $b) . '<BR>';
echo '(a > b) || (a > c) : ' . (($a > $b) || ($a > $c)) . '<BR>';
?>
</BODY>
</HTML>

La primera comparación nos dice si '$a' es mayor que '$b' y a la vez mayor que '$c'. La segunda, si '$a' es mayor que '$b' y a la vez menor que '$c'. La tercera nos dice si no se cumple que '$a' sea menor que '$b'. La cuarta nos dice si '$a' es mayor que '$b' o bien '$a' es mayor que '$c'.

3.I Estructuras de control: Condicionales Dentro de las sentencias de control de flujo nos encontramos con las condicionales. Este tipo de sentencias sirven para hacer UNA u OTRA cosa en función de una cierta condición.

En la vida real, un condicional sería algo del tipo "si llueve cogeré el paraguas y si no llueve me pondré camisa"; en PHP, los condicionales son como los de C:

<?php if (condicion) { Codigo_Si_Se_Cumple } else { Codigo_Si_No_Se_Cumple } ?>
<?php
if (condicion) { Codigo_Si_Se_Cumple }
else
{ Codigo_Si_No_Se_Cumple }
?>

Si 'condicion' es evaluado como 'true' (verdadero), entonces se ejecuta el código que hay a continuación del 'if', y si es evaluado como 'false' (falso), se ejecuta el código que hay a continuación del 'else'. No es necesario poner siempre el 'else', puede ser que sólo queramos ejecutar unas acciones si sucede ALGO, pero nos de igual si ALGO no sucede. Además, los 'if' pueden estar anidados según la complejidad del programa. Veamos un ejemplo:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<HTML>
<HEAD>
<TITLE> Ejemplos con condicionales </TITLE>
</HEAD>
<BODY BGCOLOR=white>
<?php
$a = 3;

Curso Básico de Programación en Lenguaje PHP

Página 9

switch($a) { case 1: print("Es la opción 1<BR>"); break; case 2: print("Es la opción
switch($a) {
case 1: print("Es la opción 1<BR>");
break;
case 2: print("Es la opción 2<BR>");
break;
case 3: print("Es la opción 3<BR>");
$a--;
break;
default: print("No hay opciones<BR>");
break;
}
print("Valor de \$a: $a");
?>
</BODY>
</HTML>

¿Qué caso se ejecutará, y qué valor tendrá al final la variable $a?

3.II Estructuras condicionales: Bucles Los bucles nos van a servir para repetir un cierto número de veces las acciones que queramos ejecutar varias veces. En PHP tenemos los siguientes bucles:

for(Inicializacion; Condicion; Actualizacion) { Codigo_a_Repetir }
for(Inicializacion; Condicion; Actualizacion)
{ Codigo_a_Repetir
}

Se trata del for del lenguaje C, por tanto:

Inicializacion es la inicialización necesaria para comenzar el bucle, y se ejecuta al empezar.

Condicion es la condición que se evalua antes de cada iteración; la iteración se realizará si la condición ha sido evaluada a cierto.

Actualizacion es la posible actualización de las variables tras cada iteración. Es ejecutada una vez finaliza cada iteración.

Por ejemplo:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<HTML>
<HEAD>
<TITLE> Ejemplo con bucle for </TITLE>
</HEAD>
<BODY BGCOLOR=white>
<?php
print("Cuenta atrás
$a = 10;
<P>");
for(; $a >= 0; $a--)
print("\$a = $a<BR>");
?>
</BODY>
</HTML>

Notar que he puesto la inicialización fuera del for. De hecho, ni la inicialización ni la condición ni la actualización son obligatorias, podríamos perfectamente escribir for(;;), pero eso sí, hay que saber que, al no haber condición, el bucle se ejecutará siempre, por lo que escribir algo tan simple como for(;;); realizará un bucle infinito.

PHP también dispone de las estructuras while y do-while, cuya estructura es como la del lenguaje C y que exponemos brevemente:

while(Condicion) { Codigo_a_Repetir } do { Codigo_a_Repetir } while(Condicion);
while(Condicion)
{ Codigo_a_Repetir }
do { Codigo_a_Repetir }
while(Condicion);

Podemos romper cualquiera de los bucles si, en un momento dado, quizá bajo una condición dada por if, escribimos la sentencia break.