Enrera
Mòdul 2
Creació i gestió d'entorns web dinàmics (PHP)
  Pràctica
1
2
3
4
5
   
Exercicis
Exercicis
 
 
   
  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)...
   
Informació

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.

Veure codi

Executar codi

<?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:

Veure codi

Executar codi
<?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.
Veure codi

Executar codi

<?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
   
Informació

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ó.

   
Atenció !
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.

   
Veure codi

Executar codi

<?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.

   
Veure codi

Executar codi

<?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.
   
Veure codi

Executar codi
<?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)
   
   
Amunt
Pràctica
1
2
3
4
   
Exercicis
Exercicis