ePrometeusCorsoLinuxLinux
testi articoli
Testi Articoli  Download
Home | PHP | Espressioni | Comandi | Libreria | Form | Cookie | Database | Config | 
CorsoJava è ora Video! Free for all!
Clicca Qui!
Tutorial PHP
Comandi
Inclusione di file
Funzioni


<<< Comandi >>>

Per quanto riguarda i valori booleani, in PHP sono considerati falsi la stringa vuota, la stringa che vale "0", i valori zero intero e in virgola mobile, e gli array che non contengono elementi. Tutti gli altri casi il valore è vero.

RIFERIMENTO: Per il controllo di flusso PHP prevede dei comandi che sono sostanzialmente gli stessi di Java e JavaScript, ma con delle estensioni per semplificare l'incorporazione nell'HTML. Per quanto riguarda i comandi di controllo di flusso si rimanda a questa sezione di CorsoJava.it. I concetti sono esattamente gli stessi, a parte poche e semplici differenze dovute principalmente alle diverse strutture dati:

  • Non ci sono controlli di tipo sulle espressioni delle condizioni: mentre in Java l'espressione deve risultare booleana, in PHP si può usare qualunque espressione, e il vero o falso viene determinato dalle regole del PHP.
  • L'espressione di controllo di switch e i valori che seguono case non sono obbligatoriamente un intero ma possono essere anche una stringa o un valore in virgola mobile.
  • break e continue non ammettono etichette.
  • Non esiste il comando try-catch-finally

Esaminiamo le estensioni del PHP. Alcune istruzioni strutturate hanno una sintassi alternativa. Consideriamo le seguenti istruzioni strutturate:

if(espressione) {
  comandi
} else if (espressione) {
  comandi
} else {
  comandi
}
while(espressione) {
  comandi
} 
for(espressione;espressione;espressione) {
  comandi
}

Le sintassi alternative disponibili permettono di evitare le graffe e sono più leggibili all'interno dell'HTML in cui il codice si pone all'interno di blocchi <? ?>. Le sintassi alternative sono:

if(espressione):
  comandi
elseif(espressione):
  comandi
else: 
  comandi
endif;
while(espressione):
  comandi
endwhile; 
for(espressione;espressione;espressione):
  comandi
endfor;

Per esempio:

<? if($show): ?>
 <table>
 <? while(hasMoreElements()): ?>
   <tr><td><? echo getNextElement(); ?>
 <? endwhile ?>
 </endtable>
<? else: ?>
<h1>Non trovato</h1>
<? endif; ?>

Vediamo adesso come esempi di comandi i vari modi in cui è possibile scandire un array. Il modo più semplice è con un ciclo che itera sui vari elementi.

for($i=0; $i<count($a); ++$i)
	print "$i: $a[$i]\n";

La funzione count ritorna il numero di elementi. Questo metodo funziona correttamente fintanto che gli elementi contenuti nell'array hanno tutti indici numerici; se tuttavia l'array contiene anche valori indicizzati da stringhe, il count ritorna un numero che comprende anche questi elementi. Il ciclo tuttavia non funziona perché gli elementi indicizzati da stringhe non sono accessibili utilizzando un l'indice numerico.

Un modo più corretto di attraversare un array è sfruttare il suo elemento corrente. Ogni array mantiene un puntatore interno alla posizione corrente. La funzione reset porta il puntatore al primo elemento, la funzione next lo fa avanzare al successivo e la funzione current ritorna l'elemento corrente. Utilizzando queste funzioni la maniera corretta di scandire gli array è:

if(reset($a)) do {
	print current($a). "\n";
} while(next($a));

Questo metodo non è particolarmente elegante da scrivere, anche se è questo il modo corretto di gestire i casi in cui l'array è vuoto. Per rendere ancora più agevole l'attraversamento di un array comprendendo sia indici che chiavi, si usa la primitiva each. Questa primitiva permette di iterare tra i vari elementi di un array: ad ogni invocazione, restituisce un piccolo array, che contiene una chiave e un valore dell'array che si sta iterando. È utile soprattutto con gli array associativi, ma funziona anche con gli array solo numerici in quanto ritorna come chiavi anche gli elementi numerici. Si usa come segue:

while( list($k, $v) = each($a)) 
  print "$k => $v\n";
ePrometeus s.r.l. - Web Software House & Open Source System Integrator
MILANO - SAN BENEDETTO DEL TRONTO(AP)
Contatti: info@eprometeus.com