Prima di incominciare a parlare di strutture di controllo voglio chiarire una piccola cosa riguardante le variabili, quello che in gergo è chiamato scope.

Questo fantomatico scope delle variabili altri non è che il contesto in cui la variabile è visibile al programmatore che può quindi leggere e modificare il suo contenuto.

In generale le variabili hanno un solo scope che si espande rendendola visibile in tutto lo script e file inclusi. Sono un’eccezione le funzioni.
Le variabili definite all’esterno di una funzione non sono viste al suo interno e tutte le variabili definite al suo interno muoiono quando questa termina.

Esistono modi piú o meno avanzati per modificare il comportamento del PHP nei confronti delle variabili ma ne parlerò piú avanti.

<?php
 
/* definisce la variabile $k */
 
$k = 1000.27;
 
echo $k; // stampa il valore di $k
 
function stampa_k ()
{
  echo $k; // non stampa niente.
 
  $z = 9;
  echo $z; // stampa $z
}
stampa_k ();
 
?>

In C era possibile, tramite le parentesi graffe, creare nuovi blocchi di istruzioni con scope diverso, ridefinire nuovamente una variabile e utilizzarla senza che quella precedente venisse modificata.
Questo giochino in PHP non è possibile visto che lo scope viene propagato anche dentro a blocchi piú interni e varie strutture di controllo.

<?php
 
$a = '1';
 
{
  echo $a; // stampa 1
  {
    $a = 7; // ora $a vale 7
  }
}
 
echo $a; // stampa 7
 
?>

vicius