if, else ed elseif

Il costrutto if(condizione) {istruzioni} serve per eseguire il codice contenuto all'interno delle parentesi graffe solo se la condizione indicata tra parentesi tonde risulta vera. La condizione che determina se eseguire il codice o meno deve essere del tipo che restituisce un valore booleano (un confronto tra due variabili, l'esistenza di una variabile, una funzione come is_float() ecc...).

Nel caso in cui la condizione risulti falsa il codice inserito tra parentesi graffe viene semplicemente saltato, oppure ne viene eseguito uno alternativo indicato nel costrutto else {istruzioni}.

<?php 
$gatto = "miao";
$cane = "bau";
if ($gatto == $cane) {
	echo "<p>La condizione indicata nelle parentesi tonde è vera. Le variabili \$gatto e \$cane sono uguali</p>";
}
else {
	echo "<p>La condizione indicata nelle parentesi tonde è falsa. La variabile \$gatto vale ".$gatto." e la variabile \$cane vale ".$cane."</p>";
}
 ?>

E' possibile usare il costrutto elseif(condizione) {istruzioni} per indicare una o più altre condizioni da valutare nel caso in cui la prima risulti falsa. La prima delle condizioni elseif che risulta vera è quella il cui codice verrà eseguito. Se tutte le condizioni sono false viene eseguito il codice indicato nel costrutto else.

<?php 
$gatto = "miao";
$cane = "bau";
if ($gatto == $cane) {
	echo "<p>La condizione indicata nelle parentesi tonde dell'if è vera. Le variabili \$gatto e \$cane sono uguali</p>";
}
elseif (is_array($gatto) AND is_array($cane)) {
	echo "<p>La condizione indicata nel primo elseif è vera. Le variabili \$gatto e \$cane sono degli array.</p>";
}
elseif ($gatto == 5) {
	echo "<p>La condizione indicata nel secondo elseif è vera. La variabile \$gatto vale 5.</p>";
}
else {
	echo "<p>Tutte le precedenti condizioni risultano false. La variabile \$gatto vale ".$gatto." e la variabile \$cane vale ".$cane."</p>";
}
 ?>

I costrutti if possono anche essere annidati uno dentro l'altro.

<?php 
$gatto = "miao";
$cane = "bau";
if ($gatto == "miao") {
	if ($cane == 5) {
		echo "<p>La condizione del primo if è vera, la variabile \$gatto vale miao. La condizione del secondo if è vera, la variabile \$cane vale 5.</p>";
	}
	else {
		echo "<p>La condizione del primo if è vera, la variabile \$gatto vale miao. La condizione del secondo if è invece falsa, la variabile \$cane non vale 5.</p>";
	}
}
else {
	echo "<p>La condizione del primo if è falsa, la variabile \$gatto non vale miao.</p>";
}
if ($gatto == $cane) {
	echo "<p>La condizione del primo if è vera, la variabile \$gatto è uguale alla variabile \$cane.</p>";
}
else {
	if ($gatto == "bau") {
		echo "<p>La condizione del primo if è falsa, la variabile \$gatto non è uguale alla variabile \$cane. La condizione del secondo if è vera, la variabile \$gatto vale bau.</p>";
	}
	else {
		echo "<p>La condizione del primo if è falsa, la variabile \$gatto non è uguale alla variabile \$cane. La condizione del secondo if è anch'essa falsa, la variabile \$gatto non vale bau.</p>";
	}
}
 ?>

switch case

Il costrutto switch($variabile) {case "opzione": {istruzioni} break;} serve per eseguire un codice diverso a seconda del valore della variabile indicata nelle parentesi tonde. I diversi valori che può assumere la variabile sono indicati dalla parola chiave case ed il relativo codice è contenuto nelle parentesi graffe dopo i due punti.

Il valore della variabile viene confrontato con ogni case in successione. Appena viene trovata la prima corrispondenza verrà eseguito il codice relativo ed anche tutti quelli successivi. Per fare in modo che venga eseguito solo il codice relativo al case corrispondente dobbiamo inserire la parola chiave break che permette di uscire dal costrutto switch case.

Se nessuno dei valori dei vari case corrisponde al valore della variabile allora viene eseguito il codice indicato dal case default.

<?php 
$segno = "toro";
switch ($segno) {
	case "ariete":
		echo "<p>Oggi sarai molto fortunato, gioca alla lotteria!</p>";
		break;
	case "toro":
		echo "<p>Oggi ti andrà tutto male, non uscire di casa!</p>";
		break;
	case "gemelli":
		echo "<p>Oggi sarà una giornata normale, fai un po' quello che vuoi.</p>";
		break;
	default:
		echo "<p>Il tuo oroscopo non è pervenuto.</p>";
}
 ?>

Spesso si usa lo switch case in alternativa al costrutto if...else. Conviene usare switch case quando si conoscono i valori che la variabile potrebbe assumere, altrimenti è meglio usare if (per esempio in caso di condizioni del tipo "se a è maggiore di b" ma non sappiamo il valore di a e b usiamo l'if).

<?php 
$segno = "toro";
switch ($segno) {
	case "ariete":
		echo "<p>Oggi sarai molto fortunato, gioca alla lotteria!</p>";
		break;
	case "toro":
		echo "<p>Oggi ti andrà tutto male, non uscire di casa!</p>";
		break;
	case "gemelli":
		echo "<p>Oggi sarà una giornata normale, fai un po' quello che vuoi.</p>";
		break;
	default:
		echo "<p>Il tuo oroscopo non è pervenuto.</p>";
}
//il codice precedente può anche essere scritto come:
if ($segno == "ariete") {
	echo "<p>Oggi sarai molto fortunato, gioca alla lotteria!</p>";
}
elseif ($segno == "toro") {
	echo "<p>Oggi ti andrà tutto male, non uscire di casa!</p>";
}
elseif ($segno == "gemelli") {
	echo "<p>Oggi sarà una giornata normale, fai un po' quello che vuoi.</p>";
}
else {
	echo "<p>Il tuo oroscopo non è pervenuto.</p>";
}
 ?>

while e do while

Il costrutto while(condizione) {istruzioni} serve per eseguire ciclicamente il codice indicato nelle parentesi graffe finchè la condizione contenuta nelle parentesi tonde risulta vera. Ad ogni iterazione viene verificata la condizione e se questa è ancora vera il codice viene eseguito, altrimenti il ciclo si ferma. Se la condizione risulta falsa in partenza il ciclo non parte.

Nell'esempio vengono calcolati i primi 10 numeri della successione di Fibonacci.

<?php 
$primo = 0;
$secondo = 1;
$indice = 0;
echo "<p>".$primo."</p>";
echo "<p>".$secondo."</p>";
while ($indice <8) {
$terzo = $secondo+$primo;
echo "<p>".$terzo."</p>";
$primo = $secondo;
$secondo = $terzo;
$indice++;
}
 ?>

Se invece vogliamo che il codice sia prima eseguito e poi sia verificata la condizione dobbiamo usare il costrutto do {istruzioni} while(condizione); . Nell'esempio vediamo che l'ultimo numero generato è inferiore a 1 anche se la condizione è che $mezzo sia maggiore di 1 proprio perchè prima viene eseguito il codice e dopo viene fatta la verifica.

<?php 
$intero = 500;
do {
	$mezzo = $intero / 2;
	echo "<p>".$mezzo."</p>";
	$intero = $mezzo;
}
while ($mezzo > 1);
 ?>

for

Il costrutto for(inizializzazione; condizione; conteggio) {istruzioni} serve per eseguire ciclicamente il codice contenuto nelle parentesi graffe finchè la condizione indicata come secondo parametro nelle parentesi tonde risulta vera. Il primo parametro viene valutato solo una volta all'inizio del ciclo e rappresenta l'inizializzazione del contatore. Ad ogni iterazione viene verificata la condizione e se questa è ancora vera il codice viene eseguito e il contatore (terzo parametro) aumenta di una unità.

Nell'esempio vengono calcolati i primi 10 numeri della successione di Fibonacci.

<?php 
$primo = 0;
$secondo = 1;
echo "<p>".$primo."</p>";
echo "<p>".$secondo."</p>";
for ($i=0; $i < 8; $i++) { 
	$terzo = $secondo+$primo;
	echo "<p>".$terzo."</p>";
	$primo = $secondo;
	$secondo = $terzo;
}
?>

I costrutti for possono anche essere annidati uno dentro l'altro. Nell'esempio viene generata la tavola pitagorica.

foreach

Il costrutto foreach($array as $variabile_temporanea) {istruzioni} serve per eseguire il codice contenuto nelle parentesi graffe per ogni elemento dell'array indicato come primo parametro nelle parentesi tonde. Ogni elemento dell'array viene temporaneamente assegnato alla variabile temporanea.

E' importante notare che il codice che eseguiamo sull'array non va a modificarlo definitivamente ma solo al momento della visualizzazione dei dati.

Se vogliamo visualizzare anche le chiavi dell'array dobbiamo provvedere una variabile temporanea anche per la chiave e scrivere foreach($array as $variabile_key => $variabile_temporanea) {istruzioni}.

<?php 
$torta = array("farina", "zucchero", "lievito", "latte");
foreach ($torta as $ingrediente) {
	echo "<p>".strtoupper($ingrediente)."</p>";
}
print_r($torta);
$torta = array(500 => "farina", 250 => "zucchero", 25 => "lievito", 100 => "latte");
foreach ($torta as $grammi => $ingrediente) {
	echo "<p>".$grammi." grammi di ".strtoupper($ingrediente)."</p>";
}
print_r($torta);
 ?>

include e include_once

require e require_once