|
|
|
Sentències i estructures de control |
|
|
|
En aquesta pràctica veurem:
- Sentències i estructures de control del PHP.
- Iteracions i bucles (repetició d'una tasca,
resseguint, per ex., un array)...
|
|
|
|
Les principals sentències de control
en PHP són:
sentències |
sintaxi |
if,
else,
elseif |
if (expr)
sentència
o bé
if (expr){
sentències
} |
codicional compacte |
$variable = (exp1) ? exp2
: exp3; |
switch |
switch ($i) {
case 0:
echo"i es igual a 0";
case 1:
echo "i es igual a 1";
case 2:
echo "i es igual a 2";
} |
for |
for (expr1; expr2;
expr3){
sentencia
}
|
foreach |
foreach(expresion_array
as $value) {
sentència
} o bé foreach(expresion_array
as $key => $value) {
sentència
} |
while |
while (expr) {
sentencia
} |
|
|
|
|
Estructures condicionals |
|
|
|
Estructura if, else, elseif |
|
L'estructura construïda a partir de if,
else,
elseif
és, podríem dir, l'estructura condicional clàssica,
implementada en tots els llenguatges. |
|
<?php
/*-----------------------------------------------------------------
* Mòdul: 2 Pràctica: 4 Fitxer: exem2p41.php
* Autor: D116 Data:
* Descripció: Estructures if, else, elseif
* Pre condi.:
* Post cond.:
-----------------------------------------------------------------*/
$grup = "B";
if ($grup == "A"){
// codi si l'expressió és certa
echo "El grup és A";
} elseif ($grup == "B"){
// codi si no és vertadera la primera expressió però
sí la segona
echo "El grup és B";
} elseif ($grup == "C"){
// codi si no és vertadera tampoc la segona expressió però
sí la
// tercera
echo "El grup és C";
} else {
// codi si no ha estat certa cap de les condidions anteriors
echo "El grup no és ni A ni B ni C";
}
?> |
|
Llistat 2.4.1. Exemple d'estructures condicionals |
|
|
|
Condicional compacte |
|
Amb la sintaxi
(exp1) ? exp2 : exp3;
podem avaluar una condició per assignar un valor a una variable
amb una sola línia de codi. Si exp1
és certa, aleshores retornarà exp2;
en cas contrari, exp3.
Per exemple: |
|
<?php
/*-----------------------------------------------------------------
* Mòdul: 2 Pràctica: 4 Fitxer: exem2p42.php
* Autor: D116 Data:
* Descripció: Condicional compacte. Retorna nombre més gran
* Pre condi.:
* Post cond.:
-----------------------------------------------------------------*/
$a = 5;
$b = 8;
$c = 3;
// Si $a < $b llavors $mesgran = $b; sinó, igual a $a
$mesgran = ($a<$b)? $b : $a;
$mesgran = ($mesgran<$c)?$c:$mesgran;
// Escrivim el número més gran dels tres comparats
echo "El valor més gran de la sèrie $a, $b i $c és:
$mesgran";
?> |
|
Llistat 2.4.2. Exemple del condicional compacte. |
|
|
|
Estructura switch |
|
L'estructura
switch
és l'equivalent a una sèrie d'if.
Quan es compleix el case,
se surt del procés mitjançant el break
col·locat darrere de cada avaluació i d'aquesta manera s'acaba
el procés abans. |
|
<?php
/*-----------------------------------------------------------------
* Mòdul: 2 Pràctica: 4 Fitxer: exem2p43.php
* Autor: D116 Data:
* Descripció: Exemple d'ús de 'switch'
* Pre condi.:
* Post cond.:
-----------------------------------------------------------------*/
// Definim la variable $pla (o la podríem recollir d'una BD)
$pla = 'ESO';
// Comencem a valorar la variable amb els case
// Quan hi hagi coincidència, per mitjà del break sortirem
del
// procés de valoració
// Cas que no coincideixi amb cap valor, arribarem a default
switch ($pla)
{
case 'ESO':
echo 'Educació Secundària Obligatòria';
break;
case 'BATX':
echo 'Batxillerat';
break;
case 'CFGM':
echo 'Cicle Formatiu de Grau Mitjà';
break;
case 'CFGS':
echo 'Cicle Formatiu de Grau Superior';
break;
// si no s'ha trobat cap coincidència...
default:
echo 'Aquesta codificació no és coneguda';
}
?> |
|
Llistat 2.4.3. Exemple d'ús de switch. |
|
|
|
|
|
Estructures d'iteració i bucles |
|
|
|
La GEC defineix iteració com a:
"Execució d'una sèrie d'instruccions d'un programa
per a un valor del paràmetre, que serà repetida successivament
fins que aquest valor no hagi arribat a un valor que permeti entrar en
un procés lògic i sortir, així, d'aquesta sèrie
de repeticions."
I bucle:
"Seqüència d'instruccions que pot ésser executada
repetitivament. A cada repetició, anomenada cicle, és corrent
que certes dades resultin modificades. L'execució del bucle s'acaba
quan ha estat satisfet un cert criteri, com ara que un comptador hagi
arribat a un valor donat o que un procés iteratiu hagi convergit."
Podem dir, doncs, que una iteració o bucle és una repetició
d'una acció fins que no s'acompleixi alguna condició o fins
que no arribem a una situació final que s'ha indicat en la definició
del bucle.
Tots els llenguatges de programació tenen diferents comandes per
a treballar aquests processos i el cas del PHP no n'és una excepció.
Una característica comuna a les diverses iteracions en PHP és
que podem utilitzar les instruccions break
i continue
per sortir-ne o continuar fins a la propera valoració. |
|
|
|
Cal anar amb compte amb la utilització
dels bucles. Hem de tenir cura en la seva definició, de manera que
no es produeixi una repetició sense fi que podria arribar a "penjar"
la màquina que l'executa. |
|
|
|
Aquests procesos es concreten en diferents sentències,
cadascuna amb matisos diferents, que veiem tot seguit. |
|
|
|
For
|
|
L'estructura for
és una de les més complexes i alhora flexibles del php.
Amb la sintaxi
for (expr1; expr2;
expr3){
sentencia
}
podem repetir un procés diferents vegades,
tenint en compte que les tres expressions serveixen per:
expr1: inicialitzar (donar-li
un valor) la variable que usarem en el for.
expr2: defineix una o més
condicions que han de complir-se per poder entrar al procés del
for; en el moment que no es complexin,
s'acaba aquest procés.
expr3: modifica el valor
de la variable usada com a comptador de la iteració; pot incrementar,
decrementar, etc. |
|
|
|
<?php
/*-----------------------------------------------------------------
* Mòdul: 2 Pràctica: 4 Fitxer: exem2p44.php
* Autor: D116 Data:
* Descripció: Exemple d'ús de 'for'
* Pre condi.:
* Post cond.:
-----------------------------------------------------------------*/
$num = 8; //definim variable
// Iniciem for:
// expr1: $i, valdrà en començar, 0
// expr2: la condició d'execució és que $i ha de
ser diferent a $num
// expr3: a cada passada incrementem $i en 1 ($i++)
for($i=0; $i != $num ; $i++)
{
// Mostrem el valor de $i com a diferent de $num
// (si fos igual ja no s'hauria executat el for
echo "\$num és diferent de ".$i."<br>";
}
// S'ha acabat l'execució del for perquè $i ja no era dif.
de $num
echo "<br><br>";
echo "Hem sortit del for <br>";
echo "perquè \$num ($num) ja no era diferent de \$i ($i)";
?> |
|
Llistat 2.4.4. Exemple d'ús de for. |
|
|
|
Foreach |
|
La construcció foreach
és la més senzilla a l'hora de fer una iteració sobre
un array. Vegem-ne un exemple amb una
de les dues sintaxis possibles:
foreach(expresion_array
as $value) {
sentència
}
Li passem un array com a primer paràmetre
i el seu contingut s'anomerà, dins del foreach,
$value ($valor, en l'ex. de més avall). A cada avaluació
de l'array, s'avança un element
fins al final. |
|
|
|
<?php
/*-----------------------------------------------------------------
* Mòdul: 2 Pràctica: 4 Fitxer: exem2p45.php
* Autor: D116 Data:
* Descripció: Exemple d'ús de 'foreach'
* Pre condi.:
* Post cond.:
-----------------------------------------------------------------*/
// Definim un array amb el dies de la setmana
$dia[0] = "dilluns";
$dia[1] = "dimarts";
$dia[2] = "dimecres";
$dia[3] = "dijous";
$dia[4] = "divendres";
$dia[5] = "dissabte";
$dia[6] = "diumenge";
// Mostrem els noms dels dies de la setmana
echo "Els dies de la setmana són:<br><br>\n";
// Recorrem l'array amb foreach
foreach ($dia as $valor) {
//a cada passada llegeix el nou valor
echo "$valor<br>\n";
}
?> |
|
Llistat 2.4.5. Exemple d'utilització
de foreach. |
|
|
|
While |
|
Un alternativa al for
és utilitzar while.
Es tracta d'una estructura semblant a la de for
però que no inclou en la seva declaració ni la inicialització
d'una variable de control, ni el seu increment o decrement. Així,
doncs, caldrà que declarem la variable abans del while
i que el seu increment o decrement el fem dins el cos de l'estructura. |
|
|
|
<?php
/*-----------------------------------------------------------------
* Mòdul: 2 Pràctica: 4 Fitxer: exem2p46.php
* Autor: D116 Data:
* Descripció: Exemple d'ús de 'while'
* Pre condi.:
* Post cond.:
-----------------------------------------------------------------*/
// Es mostrarà els números divisibles per $div fins $total
// Definim les tres variables que necessitem amb el seu valor
$i = 0; //variable de control del while
$div = 13; //número a dividir (divisor)
$total = 100; //total a considerar (fins a quant) (dividend)
echo "<h2>Números divisibles per $div (fins a $total)</h2>";
// Iniciem el while amb $i = 0 i per tant hi entrarem mentre
// $i sigui més petit que $total (com és el cas d'entrada)
while ($i <= $total){
// Si és divisible entre $div, l'escriurem
if ($i%$div == 0 ){
echo $i." - ";
}
// Incrementem $i; si no ho féssim, no s'acabaria mai el while
// i podria provocar un problema en el sistema.
$i++;
} // fi del while
?> |
|
Llistat 2.4.6. Exemple d'utilització
de while. |
|
|
|
Altres estructures |
|
Altres estructures de control
iteratives són:
- Do
.. While (alternativa a while)
- List,
Each (alternativa a foreach
per resseguir un array)
- array_walk
(funció amb dos paràmetres: un array i el nom d'una
altra funció; va aplicant la funció a cada element de
l'array)
|
|
|
|
|
 |
|
|
|