PHP Estruturas de control

De MediaWiki
Saltar a: navegación, buscar

if

  • Nota: Esta información está baseada na que se atopa na web de php.
  • O construtor if permite a execución condicional de fragmentos de código.
  • Sintaxe:
  1. if (expr)
  2.   sentenza
Sendo expr unha expresión que pode ser avaliada como true ou false.
En caso de ser avaliada como true se executa a sentenza.

Exemplo de código:

  1. <?php
  2. if ($a > $b) {      // Se $a é maior que $b executa dita sentenza
  3.   echo "a é maior b";
  4. }
  5. ?>


  • Se queremos executar varias sentenzas temos que facer uso das chaves {....}. Todas as sentenzas que estean dentro das chaves será executadas.

Exemplo de código:

  1. <?php
  2. if ($a > $b) {
  3.   echo "a é maior b";
  4.   $b = $a;
  5. }
  6. ?>
  • É necesario que a condición estea entre parénteses: (expr).
  • Pódense anidar if´s de forma indefinida.

Exemplo de código:

  1. <?php
  2. if ($a > $b) {
  3.   echo "a é maior b";
  4.   if ($a > $c) {
  5.      echo "a é maior que c";
  6.   }
  7. }
  8. ?>


else

  • Nota: Esta información está baseada na que se atopa na web de php.
  • else forma parte do if e vai servir para executar un conxunto de sentenzas cando non se cumpra a condición indicada no if (cando o valor da expresión avaliada no if sexa false).

Exemplo de código:

  1. <?php
  2.   if ($a > $b) {
  3.     echo "a é maior que b";
  4.   } else {
  5.     echo "a é menor ou igual que b";
  6.   }
  7. ?>


elseif | else if

  • Nota: Esta información está baseada na que se atopa na web de php.
  • As dúas formas ('elsif' e 'else if') van facer o mesmo.
  • As condicións elseif van despois dun if e se avalían se a condición do if devolve false. A diferenza do else, podemos ter varios elseif un despois doutro e se irán avaliando en orde ata que un deles se avalía como true. Nese intre executarase o seu código e non se avaliará ningún elseif nin else que haia a continuación.


Exemplo de código:

  1. <?php
  2.   if ($a > $b) {
  3.     echo "a é maior que b";
  4.   } elseif ($a == $b) {
  5.     echo "a é igual a b";
  6.   } else {
  7.     echo "a é menor que b";
  8.   }
  9. ?>

while

  • Nota: Esta información está baseada na que se atopa na web de php.
  • Sintaxe:
while (expresión) {
      Sentenzas a executar;
}


Se o while ten unha única sentenza a executar podemos poñer:
while (expresión)
      Unha única sentenza;


  • Existe unha sintaxe alternativa para o anterior:
while (expresión):
      Sentenzas a executar;
endwhile;


  • O que fai while é executar as sentenzas que se atopan dentro das chaves ata que a expresión devolva false.
Fixarse como primeiro se avalía a expresión e se é certa (devolve true) se executan as sentenzas. Se a primeira vez vale false nunca vai entrar a executar as sentenzas.
Vexamos un exemplo:
<?php
$i = 1;
while ($i <= 10) {
    echo $i++;  /* o valor presentado sería
                   $i antes do incremento
                   (post-incremento) */

}
?>
Sairá como resultado os números do 1 ata o 10.


do-while

  • Nota: Esta información está baseada na que se atopa na web de php.
  • Sintaxe:
do {

      Sentenzas a executar;

while (expresión);
  • O concepto é o mesmo que no caso do bucle while. A diferenza estriba en que neste caso o grupo de sentenzas a executar sempre se executarán a lo menos unha vez, xa que a avaliación da expresión se fai despois de executar as sentenzas.


Vexamos un exemplo:
<?php
$i = 0;
do {
    echo $i++;
} while ($i <= 10);
?>
Amosará todos os números dende 0 ata o 10.
  • Se facemos unha modificación a expresión do while para que sexa false na primeira iteración...
<?php
$i = 0;
do {
    echo $i++;
} while ($i > 10);
?>
Amosará o valor 0, e sairá do bucle.


for

  • Nota: Esta información está baseada na que se atopa na web de php.
  • A sentenza 'for' serve para repetir un conxunto de sentenzas mentres se cumpra unha determinada condición. A cada repetición denomínase 'iteración' (ao igual que no caso do while).
  • Sintaxe:
for(expr1;expr2;expr3){

      Sentenzas a executar;
}
Sendo:
  • expr1: Execútase ao comezo do bucle e soamente unha vez. Normalmente é utilizada para dar valores iniciais á variable que se vai utilizar no bucle.
  • expr2: Ao comezo de cada iteración avalíase a expr2 e devolverá true ou false. O bucle for seguirá executando as sentenzas ata que expr2 devolva false.
  • expr3: Ao final de cada iteración avalíase (execútase) expr3.
expr1,expr2 e expr3 poden ser calquera sentenza php e poden poñerse varias sentenzas separadas por ',' (coma).
  • Normalmente imos utilizar o bucle for para executar un conxunto de sentenzas en base a un contador que se irá incrementando en cada iteración (repetición) ata que chegue a un determinado valor, indicado na expresión 'expr2'.
Por exemplo:
for($cont=0;$cont<5;$cont++){

      printf("Amosando o valor de \$cont: %s<br />",$cont);
}

Nota: $cont++ é igual que poñer $cont=$cont+1. Temos tamén a operación contraria ($cont--).


Este exemplo produce a seguinte saída:
      Amosando o valor de $cont:0
      Amosando o valor de $cont:1
      Amosando o valor de $cont:2
      Amosando o valor de $cont:3
      Amosando o valor de $cont:4


  • Para saír do for sen esperar a que se cumpra a condición indicada no mesmo podemos facer uso da sentenza break.
Por exemplo:
for($cont=0;$cont<5;$cont++){
      if($cont==3) break;
      printf("Amosando o valor de \$cont: %s<br />",$cont);
}
Saída:
      Amosando o valor de $cont:0
      Amosando o valor de $cont:1
      Amosando o valor de $cont:2


  • Para saltar unha iteración (é dicir, que non continúe executando as sentenzas que se atopan dentro do for e avalíe directamente a expr3, saltando ao comezo do bucle) podemos facer uso da sentenza continue.
Por exemplo:
for($cont=0;$cont<5;$cont++){
      if($cont==2) continue;
      printf("Amosando o valor de \$cont: %s<br />",$cont);
}
Saída:
      Amosando o valor de $cont:0
      Amosando o valor de $cont:1
      Amosando o valor de $cont:3
      Amosando o valor de $cont:4


  • Podemos utilizar o for (ao igual que o while) para xerar dinamicamente o contido dun formulario dunha páxina web:
Imaxinemos que dispoñemos en $_POST['num_exemplares'] o número de exemplares dun libro que queremos dar de alta na nosa base de datos (este dato ven dun formulario anterior).
Podemos crear o seguinte formulario:
<form action='Alta_Exemplares.php' method='post'>
  <?php
    for($cont=1;$cont<$_POST['num_exemplares'];$cont++){
       echo "<input type='text' name='txtEstadoExemplar[]' />";
    }
  ?>
   <input type='submit' value='Enviar' name='btnAltaExemplares' />
</form>
Poderíamos enviar de vez os estados (roto,perfecto, pintado,...) de cada un dos exemplares a dar de alta (é un exemplo, loxicamente se queremos gardar ese tipo de dato sería mais conveniente utilizar un <select> cos diferentes estados.
Lembrar que xa vimos anteriormente na wiki como enviar datos en forma de array.




-- Ángel D. Fernández González -- (2016).