 |
PHP 4 (non PHP 3) permette l'uso della struttura di controllo foreach,
alla stessa maniera del linguaggio Perl e altri. Ci� semplicemente fornisce
una facile metodo per attraversare un array. foreach funziona solo con le matrici
e genera un errore se si tenta di utilizzarlo con variabili di tipo diffente
oppure non inizializzate. Esistono due possibili notazioni sintattiche; la seconda �
un'utile estensione della prima:
La prima attraversa l'array dato da
array_expression. Ad ogni ciclo, si assegna il valore
dell'elemento corrente a $value e
il puntatore interno avanza di una posizione (in modo tale che al ciclo successivo
l'elemento corrente sar� il successivo elemento dell'array).
La seconda esegue lo stesso ciclo con la differenza che il
valore dell'indice corrente viene assegnato ad ogni ciclo,
alla variabile $key.
Dal PHP sono anche possibili
cicli sugli oggetti.
Nota:
All'inizio dell'esecuzione di un ciclo foreach
il puntatore interno viene automaticamente posizionato nella prima
posizione. Questo significa che non � necessario utilizzare la
funzione reset() prima di un ciclo
foreach.
Nota:
A meno che la matrice non sia per riferimento,
foreach agisce su una copia e non
sulla matrice stessa. Pertanto il puntatore dell'array originale
non viene modificato come accade utilizzando la funzione each()
e le modifiche agli elementi dell'array non
appaiono nell'array originale.
Tuttavia il puntatore interno della matrice originale
viene avanzato durante l'elaborazione della
matrice. Se si assume che il ciclo foreach giunga al termine, allorasi avr� che
il puntatore interno della matrcie sar� al termine della matrice stessa.
Dal PHP 5 si pu� modificare facilmente gli elementi di una matrice anteponendo
& a $value with &. Questo assegna un
riferimento anzich� copiare
il valore.
Questo � possibile soltanto se l'array indicato pu� essere referenziato
(ad esempio � una variabile).
Nota:
foreach non offre la possibilit� di annullare la generazione
di messaggi d'errore utilizzando il carattere '@'.
Avete probabilmente notato che i due cicli seguenti sono identici da un
punto di vista funzionale:
Allo stesso modo i due cicli seguenti sono identici:
Di seguito, altri esempi per mostrare possibili utilizzi:
|  |