Il ciclo While in PHP

Gli argomenti di questa pagina

  • Struttura di controllo while
  • Comparazione tra while e for
  • Lettura di una normale matrice con ciclo while
  • Lettura di una matrice associativa con ciclo while
  • Lettura di un result-set con ciclo while

Struttura di controllo while

Un costrutto alternativo ai due cicli for e foreach è il ciclo while.
Come per il ciclo for, il ciclo while dura fino a quando la condizione è vera. Per far questo dobbiamo necessariamente impostare una valore prima di iniziare il ciclo far variare la condizione di tale valore all'interno del ciclo.
E' possibile affermare che è leggermente meno sofisticato di un ciclo for, ma svolge approssimativamente la stessa funzione.
E' composto da un blocco di istruzioni e da una condizione di uscita.
All'ingresso del ciclo e ogni volta che viene eseguito tutto il blocco di istruzioni si effettua il controllo sulla condizione di uscita.
Il ciclo termina quando la condizione d'uscita restituisce il valore FALSE.
Può essere considerato come una IF ripetuta all'interno del ciclo fintanto che il risultato della verifica risulti TRUE.
La sintassi di un ciclo while è la seguente:

while (condizione) {
blocco istrizioni;
eventuasle modifica del valore valutato in condizione
}

Vediamo ora alcuni esempi.

Comparazione tra while e for

Qui sotto è possibile osservare la differenza che corre tra le due strutture while e for

1
2
3
4
5
6
7
8
9
10
11
<?php
$i
=0;
while (
$i<10) {
    echo 
"Valore attuale: " $i "<br />\n";
    
$i++; 
}
echo 
"<span class=\"brown\">Equivalente a</span><br />\n";
for (
$i=0$i<10$i++) {
    echo 
"Valore attuale: " $i "<br />\n";
}
?>
Valore attuale: 0
Valore attuale: 1
Valore attuale: 2
Valore attuale: 3
Valore attuale: 4
Valore attuale: 5
Valore attuale: 6
Valore attuale: 7
Valore attuale: 8
Valore attuale: 9
Equivalente a
Valore attuale: 0
Valore attuale: 1
Valore attuale: 2
Valore attuale: 3
Valore attuale: 4
Valore attuale: 5
Valore attuale: 6
Valore attuale: 7
Valore attuale: 8
Valore attuale: 9

Lettura di una normale matrice con ciclo while

Le operazioni da eseguire:
imposto un contatore al valore minimo (0 - zero)
avvio il ciclo while
stampo il primo elemento puntato da tale contatore
incremento il contatore
continuo nel ciclo finchè il contatore risulta inferiore al numero di elementi contenuti nella matrice

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
$amici
= array (
    
"Marco",
    
"Giovanni",
    
"Pasquale",
    
"Giuseppe"
    
"Nicola",
    
"Luisa",
    
"Ivo",
    
"Maria"
);
$i 0;
while (
$i count($amici)) {
   echo 
$amici[$i] ."<br />\n";
   
$i++;
}
?>
Marco
Giovanni
Pasquale
Giuseppe
Nicola
Luisa
Ivo
Maria

Lettura di una matrice associativa con ciclo while

Usando questo ciclo possiamo leggere i soli valori della matrice che le chiavi e relativi valori.
In entrambi i casi occorre l'aiuto di una nuova funzione: list() che esige due argomenti.
Qui sotto verranno mostrati due esempi. In entrambi i casi il risultato che si ottiene è equivalente a quello offerto dal ciclo foreach.

Nel primo esempio leggo i soli valori, perciò lascio vuoto il primo argomento scrivendo una semplice virgola (,) e scrivo il nome della variabile dove voglio memorizzare i vari valori puntati dal ciclo

Primo esempio
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
$elements 
= array(
    
'Casa' => 'Mattoni'
    
'Finestra' => 'Legno'
    
'Sacco' => 'Plastica'
    
'Coperta' => 'Lana'
    
'Scarpe' => 'Pelle'
); 
echo 
"<span class=\"brown\">lettura dei soli valori</span><br />\n";
while (list(, 
$value) = each($elements)) {
    echo 
"Value: " $value "<br />\n";
}
echo 
"<span class=\"brown\">Equivalente al seguente</span><br />\n";
foreach (
$elements as $value) {
    echo 
$value "<br />\n";
}

?>
Primo esempio
lettura dei soli valori
Value: Mattoni
Value: Legno
Value: Plastica
Value: Lana
Value: Pelle
Equivalente al seguente
Mattoni
Legno
Plastica
Lana
Pelle

Nel secondo esempio tentiamo di leggere sia le chiavi che i valori ad esse associati di una matrice associativa, perciò nella funzione list() scrivo i due argomenti key e value.

Secondo esempio
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
$elements 
= array(
    
'Casa' => 'Mattoni'
    
'Finestra' => 'Legno'
    
'Sacco' => 'Plastica'
    
'Coperta' => 'Lana'
    
'Scarpe' => 'Pelle'
); 
echo 
"<span class=\"brown\">lettura delle chiavi e dei valori</span><br />\n";
while (list(
$key$value) = each($elements)) {
    echo 
"Key: " $key ": Value: " $value "<br />\n";
}
echo 
"<span class=\"brown\">Equivalente al seguente</span><br />\n";
foreach (
$elements as $key => $value) {
    echo 
$key " ==> " $value "<br />\n";
}
?>
Secondo esempio
lettura delle chiavi e dei valori
Key: Casa: Value: Mattoni
Key: Finestra: Value: Legno
Key: Sacco: Value: Plastica
Key: Coperta: Value: Lana
Key: Scarpe: Value: Pelle
Equivalente al seguente
Casa ==> Mattoni
Finestra ==> Legno
Sacco ==> Plastica
Coperta ==> Lana
Scarpe ==> Pelle

Lettura di un result-set con ciclo while

Come ultimo esempio diamo un metodo per la lettura di un result-set ottenuto da una Query ad un DB (non troppo fuori tema in questo contesto)
Non espongo tutta la procedura perchè quella verrà discussa in altra sede ed anche perchè in queste pagine non c'è alcuna connessione al DB.
Ovviamente qui non ci sarà nessun , ma solo il codice, non essendo questa la sede di lavoro con il DB.

1
2
3
4
5
6
7
8
9
<?php
$query 
"SELECT name, subject, message FROM contact";
$result mysql_query($query);
while (
$row mysql_fetch_array($result)) {
    echo 
"Name :" $row['name'] . "<br>\n";
    echo 
"Subject :" $row['subject'] . "<br>\n";
    echo 
"Message :" $row['message'] . "<br>\n";
}
?>

 

 



settore tecnico il sito di lorettabweb il Forum di sostegno
il forum il forum il forum