PHP Estruturas de control

De MediaWiki
Ir a la navegación Ir a la búsqueda

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