PHP Estruturas de control
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).