cortesi         Mon Mar 18 14:00:15 2002 EDT

  Modified files:              
    /phpdoc/it/language control-structures.xml 
  Log:
  update to EN 1.55 by Marco Spisto
  
Index: phpdoc/it/language/control-structures.xml
diff -u phpdoc/it/language/control-structures.xml:1.10 
phpdoc/it/language/control-structures.xml:1.11
--- phpdoc/it/language/control-structures.xml:1.10      Tue Dec 18 13:00:12 2001
+++ phpdoc/it/language/control-structures.xml   Mon Mar 18 14:00:05 2002
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="iso-8859-1"?>
-<!-- EN-Revision: 1.45 Maintainer: spisto  Status: working -->
+<!-- EN-Revision: 1.55 Maintainer: spisto  Status: working -->
  <chapter id="control-structures">
   <title>Strutture di controllo</title>
 
@@ -17,7 +17,7 @@
   <sect1 id="control-structures.if">
    <title><literal>if</literal></title>
    <para>
-    Il costrutto <literal>if</literal> � uno delle pi� importanti
+    Il costrutto <literal>if</literal> � una delle pi� importanti
     caratteristiche di qualsiasi linguaggio, incluso PHP.
     Permette l'esecuzione condizionata di frammenti di codice.
     La struttura di controllo <literal>if</literal> di PHP � simile a quella del 
linguaggio C:
@@ -31,14 +31,18 @@
     </informalexample>
    </para>
    <simpara>
-    Come descritto nel capitolo sulle espressioni, expr restituir� il 
-    suo valore di verit�. Se <replaceable>espressione</replaceable> 
-    � &true;, PHP eseguir� l'espressione, se 
-    � &false;, la ignorer�.
+    Come descritto nella <link linkend="language.expressions">sezione sulle
+    espressioni</link>, <replaceable>espressione</replaceable> restiruir� il suo
+    valore booleano. Se <replaceable>espressione</replaceable> vale &true;,
+   PHP eseguir� <replaceable>istruzione</replaceable>, e se essa vale
+    &false; - la ignorer�. Pi� informazioni riguardo i valori valutati
+    &false; possono essere trovati nella sezione <link
+    linkend="language.types.boolean.casting">'Conversione in booleano'</link>
+    .
    </simpara>
    <para>
-    L'esempio che segue visualizzer� <computeroutput>a � maggiore 
-    di b</computeroutput> se <replaceable>$a</replaceable> sar� maggiore 
+    L'esempio che segue visualizzer� <computeroutput>a � maggiore
+    di b</computeroutput> se <replaceable>$a</replaceable> sar� maggiore
     di <replaceable>$b</replaceable>:
     <informalexample>
      <programlisting role="php">
@@ -52,17 +56,17 @@
    <para>
     Spesso sar� necessario eseguire pi� di una istruzione
     condizionale.  Naturalmente non � necessario, utilizzare una singola clausola
-    <literal>if</literal> per ciascuna istruzione.  Si possono raggruppare diverse 
istruzioni
-    in un singolo gruppo di istruzioni.  Per esemipo, il codice che segue
-    visualizzer� <computeroutput>a is bigger than b</computeroutput>
-    se <replaceable>$a</replaceable> � maggiore di <replaceable>$b</replaceable>, 
-    e successivamente assegner� il valore della variabile 
<replaceable>$a</replaceable> 
+    <literal>if</literal> per ciascuna istruzione. Si possono raggruppare diverse 
+istruzioni
+    in un singolo gruppo di istruzioni. Per esempio, il codice che segue
+    visualizzer� <computeroutput>a � maggiore di b</computeroutput>
+    se <replaceable>$a</replaceable> � maggiore di <replaceable>$b</replaceable>,
+    e successivamente assegner� il valore della variabile 
+<replaceable>$a</replaceable>
     alla variabile <replaceable>$b</replaceable>:
     <informalexample>
      <programlisting role="php">
 <![CDATA[
 if ($a > $b) {
-    print "a � maggiore dib";
+    print "a � maggiore di b";
     $b = $a;
 }
 ]]>
@@ -70,9 +74,9 @@
     </informalexample>
    </para>
    <simpara>
-    Si possono annidare indefinitamente istruzioni 
-    <literal>if</literal>, la qual cosa fornisce piena 
-    flessibilit� per l'esecuzione di istruzioni condizionali in differenti punti del 
+    Si possono annidare indefinitamente istruzioni
+    <literal>if</literal>, la qual cosa fornisce piena
+    flessibilit� per l'esecuzione di istruzioni condizionali in diversi punti del
     programma.
    </simpara>
   </sect1>
@@ -81,14 +85,14 @@
    <title><literal>else</literal></title>
    <para>
     Spesso � necessario eseguire un'istruzione se una proposizione � vera
-    e un'altra istruzione se la proposizione � falsa. Per questo 
-    si usa la clausola <literal>else</literal>.  <literal>else</literal>
+    e un'altra istruzione se la proposizione � falsa. Per questo
+    si usa la clausola <literal>else</literal>. <literal>else</literal>
     estende il costrutto <literal>if</literal> aggiungendo la possibilit�
-    di eseguire un'istruzione se l'espressione nel ramo <literal>if</literal> 
-    � &false;. L'esempio che segue 
-    visualizzer� <computeroutput>a � maggiore di 
-    b</computeroutput> se <replaceable>$a</replaceable> � maggiore di 
-    <replaceable>$b</replaceable> e <computeroutput>a NON � maggiore 
+    di eseguire un'istruzione se l'espressione nel ramo <literal>if</literal>
+    � &false;. L'esempio che segue
+    visualizzer� <computeroutput>a � maggiore
+    di b</computeroutput> se <replaceable>$a</replaceable> � maggiore di
+    <replaceable>$b</replaceable> e <computeroutput>a NON � maggiore
     di b</computeroutput> altrimenti:
     <informalexample>
      <programlisting role="php">
@@ -101,10 +105,10 @@
 ]]>
      </programlisting>
     </informalexample>
-    
+
     Il ramo <literal>else</literal> viene eseguito solo se l'espressione
-    nel ramo <literal>if</literal> � 
-    &false;, e, nel caso ci fossero delle clausole 
+    nel ramo <literal>if</literal> �
+    &false;, e, nel caso ci fossero delle clausole
     <literal>elseif</literal>, solamente se le espressioni in esse contenute fossero
     anch'esse &false; (vedere <link
     linkend="control-structures.elseif">elseif</link>).
@@ -116,16 +120,16 @@
    <title><literal>elseif</literal></title>
    <para>
     <literal>elseif</literal>, come � facile intuire, � una combinazione
-    di <literal>if</literal> and <literal>else</literal>.  Analogamente a
+    di <literal>if</literal> ed <literal>else</literal>. Analogamente ad
     <literal>else</literal>, estende <literal>if</literal>
     aggiungendo la possibilit� di eseguire un'altra istruzione nel caso
-    in cui l'espressione contenuta nel ramo <literal>if</literal> 
-    sia &false;. Per�, a differenza 
-    di <literal>else</literal>, si eseguir� l'istruzione alternativa 
-    solamente se l'espressione contenuta nel ramo <literal>elseif</literal> 
-    sar� &true;. L'esempio 
-    che segue, visualizzer� <computeroutput>a � maggiore di 
-    b</computeroutput>, <computeroutput>a � uguale a b</computeroutput> 
+    in cui l'espressione contenuta nel ramo <literal>if</literal>
+    sia &false;. Per�, a differenza
+    di <literal>else</literal>, si eseguir� l'istruzione alternativa
+    solamente se l'espressione contenuta nel ramo <literal>elseif</literal>
+    sar� &true;. L'esempio
+    che segue, visualizzer� <computeroutput>a � maggiore di
+    b</computeroutput>, <computeroutput>a � uguale a b</computeroutput>
     oppure <computeroutput>a � minore di b</computeroutput>:
     <informalexample>
      <programlisting role="php">
@@ -143,21 +147,21 @@
    </para>
    <simpara>
     Nel medesimo blocco <literal>if</literal> possono essere presenti
-    pi� d'una clausola <literal>elseif</literal>. L'istruzione del
-    primo ramo <literal>elseif</literal> la cui espressione 
-    sia &true; verr� eseguito. In PHP � possibile 
-    scrivere 'else if' (due parole) e il significato sar� 
-    lo stesso di 'elseif' (una sola parola). Il significato sintattico 
+    pi� di una clausola <literal>elseif</literal>. Verr� eseguita
+    l'istruzione del primo ramo <literal>elseif</literal> la cui espressione
+    sia &true;. In PHP � possibile
+    scrivere 'else if' (due parole) e il significato sar�
+    lo stesso di 'elseif' (una sola parola). Il significato sintattico
     � leggermente differente (se si ha familiarit� con il linguaggio C, esso ha lo 
stesso
-    comportamento) per� al lato pratico l'effetto � 
+    comportamento) per� al lato pratico l'effetto �
     il medesimo.
    </simpara>
    <simpara>
-    L'istruzione di un ramo <literal>elseif</literal> si eseguir� solo se 
l'espressione del 
-    ramo <literal>if</literal> e le espressioni dei 
-    rami <literal>elseif</literal> precedenti sono 
+    L'istruzione di un ramo <literal>elseif</literal> verr� eseguita solo se 
+l'espressione del
+    ramo <literal>if</literal> e le espressioni dei
+    rami <literal>elseif</literal> precedenti sono
     &false;, e se l'espressione
-    del ramo <literal>elseif</literal> � 
+    del ramo <literal>elseif</literal> �
     &true;.
    </simpara>
   </sect1>
@@ -165,11 +169,11 @@
   <sect1 id="control-structures.alternative-syntax">
    <title>Sintassi alternativa per le strutture di controllo</title>
    <para>
-    PHP offre una sintassi alternatica per alcune delle sue strutture di controllo;
+    PHP offre una sintassi alternativa per alcune delle sue strutture di controllo;
     vale a dire, <literal>if</literal>,
     <literal>while</literal>, <literal>for</literal>,
     <literal>foreach</literal> e <literal>switch</literal>.
-    Fondamentalmente la sintassi alternativa consiste nel sostituire 
+    Fondamentalmente la sintassi alternativa consiste nel sostituire
     la prima parentesi graffa con il carattere "duepunti" (:) e la seconda parentesi 
graffa con
     <literal>endif;</literal>, <literal>endwhile;</literal>,
     <literal>endfor;</literal>, <literal>endforeach;</literal>, oppure
@@ -178,21 +182,21 @@
      <programlisting role="php">
 <![CDATA[
 <?php if ($a == 5): ?>
-A � maggiore di 5
+a � uguale a 5
 <?php endif; ?>
 ]]>
      </programlisting>
     </informalexample>
    </para>
    <simpara>
-    Nell'esempio precedente, il blocco HTML "A = 5" � incluso nel ramo
-    <literal>if</literal> scritto con utilizzando la sintassi alternativa.
+    Nell'esempio precedente, il blocco HTML "a � uguale a 5" � incluso nel ramo
+    <literal>if</literal> scritto utilizzando la sintassi alternativa.
     Il blocco HTML verr� visualizzato solamente se $a � uguale a 5.
    </simpara>
    <para>
-    La sintassi alternativa si applica anche a <literal>else</literal> e
-    <literal>elseif</literal>. Nell'esempio che segue  si mostra come utilizzare la 
sintassi alternativa 
-    nel caso di un <literal>if</literal> con <literal>elseif</literal> e
+    La sintassi alternativa si applica anche ad <literal>else</literal> ed
+    <literal>elseif</literal>. Nell'esempio che segue si mostra come utilizzare la 
+sintassi alternativa
+    nel caso di un <literal>if</literal> con <literal>elseif</literal> ed
     <literal>else</literal>:
     <informalexample>
      <programlisting role="php">
@@ -204,7 +208,7 @@
     print "a � uguale a 6";
     print "!!!";
 else:
-    print "a non � uguale n� a 5 n� a 6";
+    print "a non � n� 5 n� 6";
 endif;
 ]]>
      </programlisting>
@@ -221,8 +225,8 @@
    <title><literal>while</literal></title>
    <para>
     Il ciclo <literal>while</literal> � la forma di ciclo pi� semplice
-    tra quelle possibili in PHP.  Si comporta come la sua controparte nel linguaggio 
C.
-    La forma basica di un ciclo <literal>while</literal> � la seguente:
+    tra quelle possibili in PHP. Si comporta come la sua controparte nel linguaggio C.
+    La forma di base di un ciclo <literal>while</literal> � la seguente:
     <informalexample>
      <programlisting>
 <![CDATA[
@@ -232,22 +236,22 @@
     </informalexample>
    </para>
    <simpara>
-    Il significato di un ciclo <literal>while</literal> � semplice. 
-    Istruisce l'interprete PHP perch� esegua l'istruzione (o le istruzioni) 
-    in esso racchiuse, ripetutamente, fintanto che l'espressionbe contenuta
+    Il significato di un ciclo <literal>while</literal> � semplice.
+    Istruisce l'interprete PHP perch� esegua l'istruzione (o le istruzioni)
+    in esso racchiuse, ripetutamente, fintanto che l'espressione contenuta
     nella clausola <literal>while</literal> ha valore &true;.
-    Il valore dell'espressione viene verificato ogni volta che il ciclo 
+    Il valore dell'espressione viene verificato ogni volta che il ciclo
     si ripete (iterazione), cos� che anche se il valore dell'espressione cambia 
durante
-    l'esecuzione dell'istruzione, il ciclo non termina fino 
+    l'esecuzione dell'istruzione, il ciclo non termina fino
     all'iterazione successiva.
     Ovviamente, se l'espressione nella clausola <literal>while</literal> ha valore
-    &false; dall'inizio, l'istruzione racchiusa nel blocco non verr� eseguita nemmeno 
+    &false; dall'inizio, l'istruzione racchiusa nel blocco non verr� eseguita nemmeno
     una volta.
    </simpara>
    <para>
-    Come nel caso della struttura di controllo <literal>if</literal>, si possono 
raggruppare 
-    pi� istruzioni nello medesimo ciclo <literal>while</literal> 
-    racchiudendo le istruzioni in parentesi grafa, oppure 
+    Come nel caso della struttura di controllo <literal>if</literal>, si possono 
+raggruppare
+    pi� istruzioni nello medesimo ciclo <literal>while</literal>
+    racchiudendo le istruzioni in parentesi graffa, oppure
     utilizzando la sintassi alternativa:
     <informalexample>
      <programlisting>
@@ -258,7 +262,7 @@
     </informalexample>
    </para>
    <para>
-    Gli esempi seguenti sono identici e entrambi visualizzano i numeri da 
+    Gli esempi seguenti sono identici e entrambi visualizzano i numeri da
     1 a 10:
     <informalexample>
      <programlisting>
@@ -268,8 +272,8 @@
 $i = 1;
 while ($i <= 10) {
     print $i++;  /* Il valore visualizzato � il valore della
-                     variabile $i prima dell'incremento
-                    (post-increment) */
+                    variabile $i prima dell'incremento
+                    (post-incremento) */
 }
 
 /* esempio 2 */
@@ -292,12 +296,12 @@
     <literal>while</literal>, con l'unica differenza che il valore dell'espressione
     viene controllato alla fine di ogni iterazione anzich� all'inizio.
     La differenza pi� importante rispetto a <literal>while</literal> � che
-    la prima iterazione di un blocco <literal>do..while</literal>verr� 
-    sempre eseguita (il valore dell'espressione viene controllato alla fine 
-    del ciclo), mentre non � necessariamente vero in un 
-    ciclo <literal>while</literal> questo (il valore dell'espressione viene 
+    la prima iterazione di un blocco <literal>do..while</literal> verr�
+    sempre eseguita (il valore dell'espressione viene controllato alla fine
+    del ciclo), mentre non sar� necessariamente eseguito in un
+    ciclo <literal>while</literal> (il valore dell'espressione viene
     controllato all'inizio del ciclo, e se tale valore �
-    &false; dall'inizio, l'esecuzione del ciclo 
+    &false; dall'inizio, l'esecuzione del ciclo
     termina immediatamente).
    </simpara>
    <para>
@@ -317,13 +321,13 @@
    <simpara>
      Il ciclo precedente verr� eseguito un'unica volta, dal momento che
      alla prima iterazione, quando si controlla l'espressione, il suo valore sar�
-     &false; ($i non � maggiore di 0) e il ciclo di 
+     &false; ($i non � maggiore di 0) e il ciclo di
      esecuzioni, termina.
    </simpara>
    <para>
-    Chi ha utilizzato il linguaggio C conosce probabilmente un'altro modo di 
utilizzare 
-    il ciclo <literal>do..while</literal>, che permette di terminare l'esecuzione 
-    delle istruzioni durante l'esecuzione stessa, utilizzando 
+    Chi ha utilizzato il linguaggio C conosce probabilmente un'altro modo di 
+utilizzare
+    il ciclo <literal>do..while</literal>, che permette di terminare l'esecuzione
+    delle istruzioni durante l'esecuzione stessa, utilizzando
     <literal>do..while</literal>(0), e usando l'istruzione <link
     linkend="control-structures.break"><literal>break</literal></link>.
     Il codice che segue esemplifica questa possibilit�:
@@ -350,7 +354,7 @@
    </para>
    <simpara>
     Non vi preoccupate se l'esempio non � sufficientemente chiaro.
-    Si possono scrivere ottimi programmi PHP anche senza far ricorso a questa 
+    Si possono scrivere ottimi programmi PHP anche senza far ricorso a questa
     'possibilit�'.
    </simpara>
   </sect1>
@@ -364,36 +368,36 @@
     <informalexample>
      <programlisting>
 <![CDATA[
-for (expr1; expr2; expr3) istruzione
+for (espressione1; espressione2; espressione3) istruzione
 ]]>
      </programlisting>
     </informalexample>
    </para>
    <simpara>
-   Il valore della prima espressione (<replaceable>expr1</replaceable>) viene 
-   verificato (eseguito) una sola volta incondizionatamente all'inizio del 
+   Il valore della prima espressione (<replaceable>espressione1</replaceable>) viene
+   verificato (eseguito) una sola volta incondizionatamente all'inizio del
    ciclo.
    </simpara>
    <simpara>
-    Ad ogni iterazione, 
-    si controlla il valore di <replaceable>expr2</replaceable>. Se � 
-    &true;, il ciclo prosegue e viene eseguita 
-    l'istruzione (o le istruzioni) contenuta nel blocco; 
+    Ad ogni iterazione,
+    si controlla il valore di <replaceable>espressione2</replaceable>. Se �
+    &true;, il ciclo prosegue e viene eseguita
+    l'istruzione (o le istruzioni) contenuta nel blocco;
     se � &false;, l'esecuzione del ciclo termina.
    </simpara>
    <simpara>
-    Al termine di ogni iterazione, <replaceable>expr3</replaceable> si verifica
-    il valore di <replaceable>expr3</replaceable>.
+    Al termine di ogni iterazione, si verifica (si esegue)
+    il valore di <replaceable>espressione3</replaceable>.
    </simpara>
    <simpara>
-    Le due espressioni possono anche non essere presenti. 
-    Se non esiste <replaceable>expr2</replaceable> significa che il ciclo deve 
-    essere eseguito indefinitamente (PHP considera implicitamente che il 
-    suo valore � &true;, come in C). Questa  possibilit� in fondo non �
+    Le due espressioni possono anche non essere presenti.
+    Se non esiste <replaceable>espressione2</replaceable> significa che il ciclo deve
+    essere eseguito indefinitamente (PHP considera implicitamente che il
+    suo valore � &true;, come in C). Questa possibilit� in fondo non �
     utile come pu� sembrare perch� obbliga a terminare il ciclo utilizzando
-    l'istruzione <link 
+    l'istruzione <link
     linkend="control-structures.break"><literal>break</literal></link>
-    invece di utilizzare le espressioni di verit� del ciclo <literal>for</literal>
+    invece di utilizzare le espressioni booleane del ciclo <literal>for</literal>
     .
    </simpara>
    <para>
@@ -402,13 +406,13 @@
     <informalexample>
      <programlisting role="php">
 <![CDATA[
-/* example 1 */
+/* esempio 1 */
 
 for ($i = 1; $i <= 10; $i++) {
     print $i;
 }
 
-/* example 2 */
+/* esempio 2 */
 
 for ($i = 1;;$i++) {
     if ($i > 10) {
@@ -417,7 +421,7 @@
     print $i;
 }
 
-/* example 3 */
+/* esempio 3 */
 
 $i = 1;
 for (;;) {
@@ -428,7 +432,7 @@
     $i++;
 }
 
-/* example 4 */
+/* esempio 4 */
 
 for ($i = 1; $i <= 10; print $i, $i++) ;
 ]]>
@@ -436,30 +440,30 @@
     </informalexample>
    </para>
    <simpara>
-    Naturalmente il primo esempio sembra il migliore (o 
-    forse il quarto),  ma l'uso del 
+    Naturalmente il primo esempio sembra il migliore (o
+    forse il quarto),  ma l'uso del
     ciclo <literal>for</literal> senza espressioni pu� essere utile
     in molti casi.
    </simpara>
    <para>
-    PHP offre una sintassi alternativa (con i "punto e virgola") per i 
+    PHP offre una sintassi alternativa (con i "punto e virgola") per i
     cicli <literal>for</literal>.
     <informalexample>
      <programlisting>
 <![CDATA[
-for (expr1; expr2; expr3): istruzione; ...; endfor;
+for (espressione1; espressione2; espressione3): istruzione; ...; endfor;
 ]]>
      </programlisting>
      </informalexample>
    </para>
    <para>
-    Alcuni linguaggi permettono l'uso della struttura di controllo 
<literal>foreach</literal> per 
-    attraversare un array o una tabella hash. PHP 3 non premette l'uso di tale ciclo 
mentre  PHP 4 s�
-    (vedere <link 
-    linkend="control-structures.foreach">foreach</link>). In PHP 3 � 
+    Alcuni linguaggi permettono l'uso della struttura di controllo 
+<literal>foreach</literal> per
+    attraversare un array o una tabella hash. PHP 3 non premette l'uso di tale ciclo 
+mentre PHP 4 si
+    (vedere <link
+    linkend="control-structures.foreach">foreach</link>). In PHP 3 �
     possibile combinare <link linkend="control-structures.while">while</link>
     con la funzione <function>list</function> e <function>each</function>
-    per ottenere la stessa funzionali�. Si veda la documentazione si queste funzioni 
+    per ottenere la stessa funzionali�. Si veda la documentazione di queste funzioni
     per ulteriori esempi.
    </para>
 
@@ -469,24 +473,24 @@
    <title><literal>foreach</literal></title>
    <para>
     PHP 4 (non PHP 3) permette l'uso della struttura di controllo 
<literal>foreach</literal>,
-    alla stessa maniera del linguaggio Perl e altri.
-    <literal>foreach</literal> offre una maniera semplice di attraversare un array. 
Esistono due possibili notazioni sintattiche; la seconda � 
+    alla stessa maniera del linguaggio Perl e altri. Ci� semplicemente fornisce
+    una facile metodo per attraversare un array. Esistono due possibili notazioni 
+sintattiche; la seconda �
     un'utile estensione della prima:
     <informalexample>
      <programlisting>
 <![CDATA[
 foreach(array_expression as $value) istruzione
-foreach(array_expression as $key =&gt; $value) istruzione
+foreach(array_expression as $key => $value) istruzione
 ]]>
      </programlisting>
     </informalexample>
    </para>
    <simpara>
-    La prima attraversa l'array dato da <literal>array_expression</literal>.
-    Ad ogni ciclo, si assegna il valore dell'elemento corrente a 
<literal>$value</literal>
-    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 prima attraversa l'array dato da
+    <literal>array_expression</literal>. Ad ogni ciclo, si assegna il valore
+    dell'elemento corrente a <literal>$value</literal> e
+    il puntatore interno avanza di una posizione (in modo tale che al ciclo successivo
+    l'elemento corrente sar� il successivo elemento dell'array).
    </simpara>
    <simpara>
     La seconda esegue lo stesso ciclo con la differenza che il
@@ -496,7 +500,7 @@
    <para>
     <note>
      <para>
-      All'inizio dell'esecuzione di un ciclo <literal>foreach</literal> 
+      All'inizio dell'esecuzione di un ciclo <literal>foreach</literal>
       il puntatore interno viene automaticamente posizionato nella prima
       posizione. Questo significa che non � necessario utilizzare la
       funzione <function>reset</function> prima di un ciclo <literal>foreach</literal>
@@ -508,9 +512,9 @@
     <note>
      <para>
       � importante notare che <literal>foreach</literal> opera su una copia
-      dell'array, pertanto il puntatore dell'array originale non viene
-      modificato come accade utilizzando la funzione <function>each</function>
-      e le modifiche agli elementi dell'array non 
+      dell'array, non sull'array stesso, pertanto il puntatore dell'array originale
+      non viene modificato come accade utilizzando la funzione 
+<function>each</function>
+      e le modifiche agli elementi dell'array non
       appaiono nell'array originale.
      </para>
     </note>
@@ -533,7 +537,7 @@
 }
 
 foreach ($arr as $value) {
-    echo "Valore: $value&lt;br&gt;\n";
+    echo "Valore: $value<br>\n";
 }
 ]]>
      </programlisting>
@@ -544,53 +548,54 @@
 <![CDATA[
 reset ($arr);
 while (list($key, $value) = each ($arr)) {
-    echo "Key: $key; Valore: $value&lt;br&gt;\n";
+    echo "Chiave: $key; Valore: $value<br>\n";
 }
 
-foreach ($arr as $key =&gt; $value) {
-    echo "Key: $key; Valore: $value&lt;br&gt;\n";
+foreach ($arr as $key => $value) {
+    echo "Chiave: $key; Valore: $value<br>\n";
 }
 ]]>
      </programlisting>
     </informalexample>
    </para>
    <para>
-    Di seguito, altri esempi per mostrare possibili utilizzi: 
+    Di seguito, altri esempi per mostrare possibili utilizzi:
     <informalexample>
      <programlisting role="php">
 <![CDATA[
-/* foreach example 1: value only */
+/* esempio 1 foreach: solo il valore */
 
 $a = array (1, 2, 3, 17);
 
 foreach ($a as $v) {
-   print "Valore corrente of \$a: $v.\n";
+   print "Valore corrente di \$a: $v.\n";
 }
 
-/* foreach example 2: value (with key printed for illustration) */
+/* esempio 2 foreach: valore (con la chiave stampata) */
 
 $a = array (1, 2, 3, 17);
 
-$i = 0; /* for illustrative purposes only */
+$i = 0; /* solo per un proposito illustrativo */
 
 foreach($a as $v) {
     print "\$a[$i] => $v.\n";
+    $i++;
 }
 
-/* foreach example 3: key and value */
+/* esempio 3 foreach: chiave e valore */
 
 $a = array (
-    "one" => 1,
-    "two" => 2,
-    "three" => 3,
-    "seventeen" => 17
+    "uno" => 1,
+    "due" => 2,
+    "tre" => 3,
+    "diciassette" => 17
 );
 
 foreach($a as $k => $v) {
     print "\$a[$k] => $v.\n";
 }
 
-/* foreach example 4: multi-dimensional arrays */
+/* esempio 4 foreach: array multidimensionali */
 
 $a[0][0] = "a";
 $a[0][1] = "b";
@@ -603,7 +608,7 @@
     }
 }
 
-/* foreach example 5: dynamic arrays */
+/* esempio 5 foreach: array dinamici */
 
 foreach(array(1, 2, 3, 4, 5) as $v) {
     print "$v\n";
@@ -624,17 +629,17 @@
    </simpara>
    <simpara>
     <literal>break</literal> accetta un argomento opzionale che definisce,
-    nel caso di cicli annidati, il livello del ciclo che � da 
+    nel caso di cicli annidati, il livello del ciclo che � da
     interrompere.
    </simpara>
    <para>
     <informalexample>
      <programlisting role="php">
 <![CDATA[
-$arr = array ('one', 'two', 'three', 'four', 'stop', 'five');
+$arr = array ('uno', 'due', 'tre', 'quattro', 'stop', 'cinque');
 while (list (, $val) = each ($arr)) {
     if ($val == 'stop') {
-        break;    /* Si pu� anche usare 'break 1;'. */
+        break;    /* Qui si pu� anche usare 'break 1;'. */
     }
     echo "$val<br>\n";
 }
@@ -664,20 +669,20 @@
    <title><literal>continue</literal></title>
    <simpara>
     <literal>continue</literal> si utilizza per interrompere l'esecuzione
-    del ciclo corrente e continuare con l'esecuzione 
+    del ciclo corrente e continuare con l'esecuzione
     all'inizio del ciclo successivo.
    </simpara>
    <simpara>
     <literal>continue</literal> accetta un argomento numerico opzionale
     che definisce, nel caso di cicli annidati, il numero di cicli da interrompere
-    e a cui iniziare l'esecuzione dell'iterazione successiva.
+    e da cui iniziare l'esecuzione dell'iterazione successiva.
    </simpara>
    <para>
     <informalexample>
      <programlisting role="php">
 <![CDATA[
 while (list ($key, $value) = each ($arr)) {
-    if (!($key % 2)) { // skip odd members
+    if (!($key % 2)) { // salta odd members
         continue;
     }
     do_something_odd ($value);
@@ -685,16 +690,16 @@
 
 $i = 0;
 while ($i++ &lt; 5) {
-    echo "Outer<br>\n";
+    echo "Esterno<br>\n";
     while (1) {
-        echo "&nbsp;&nbsp;Middle<br>\n";
+        echo "&nbsp;&nbsp;Centrale<br>\n";
         while (1) {
-            echo "&nbsp;&nbsp;Inner<br>\n";
+            echo "&nbsp;&nbsp;Interno<br>\n";
             continue 3;
         }
-        echo "This never gets output.<br>\n";
+        echo "Questo non sar� mai stampato.<br>\n";
     }
-    echo "Neither does this.<br>\n";
+    echo "Nemmeno questo.<br>\n";
 }
 ]]>
      </programlisting>
@@ -705,10 +710,10 @@
   <sect1 id="control-structures.switch">
    <title><literal>switch</literal></title>
    <simpara>
-    <literal>switch</literal> � simile a una serie di 
-    IF sulla stessa espressione. In molti casi pu� essere 
-    necessario confrontare una variabile (o espressione) con differenti 
-    valori ed eseguire un differente blocco di istruzioni a seconda
+    <literal>switch</literal> � simile a una serie di
+    if sulla stessa espressione. In molti casi pu� essere
+    necessario confrontare una variabile (o espressione) con
+    differenti valori ed eseguire un differente blocco di istruzioni a seconda
     del valore di detta variabile. Questo � esattamente quello che fa la struttura
     di controllo <literal>switch</literal>.
    </simpara>
@@ -721,24 +726,24 @@
      <programlisting role="php">
 <![CDATA[
 if ($i == 0) {
-    print "i equals 0";
+    print "i � uguale a 0";
 }
 if ($i == 1) {
-    print "i equals 1";
+    print "i � uguale a 1";
 }
 if ($i == 2) {
-    print "i equals 2";
+    print "i � uguale a 2";
 }
 
 switch ($i) {
     case 0:
-        print "i equals 0";
+        print "i � uguale a 0";
         break;
     case 1:
-        print "i equals 1";
+        print "i � uguale a 1";
         break;
     case 2:
-        print "i equals 2";
+        print "i � uguale a 2";
         break;
 }
 ]]>
@@ -749,15 +754,15 @@
     � importante comprendere esattamente come viene eseguita la
     clausola <literal>switch</literal> per evitare errori.
     Un'istruzione <literal>switch</literal> esegue linea dopo linea
-    le istruzioni in essa contenuta.
-    Solamente quando incontra una clausola <literal>case</literal> 
+    le istruzioni in essa contenuta. All'inizio non viene eseguito
+    alcun codice. Solamente quando incontra una clausola <literal>case</literal>
     il cui valore � uguale al valore della viariabile, PHP inizia ad
-    eseguire le istruzioni contenute nel blocco case.
-    PHP continua l'esecuzione delle istruzioni fino alla termine del 
-    blocco <literal>switch</literal>, o quando incontra un'istruzione 
+    eseguire le istruzioni contenute nel blocco <literal>case</literal>.
+    PHP continua l'esecuzione delle istruzioni fino alla termine del
+    blocco <literal>switch</literal>, o quando incontra un'istruzione
     <literal>break</literal>. Se non esiste alcuna
     istruzione <literal>break</literal> al termine di un blocco case
-    PHP continuer� l'esecuzione le istruzioni del blocco case successivo.
+    PHP continuer� l'esecuzione delle istruzioni del blocco case successivo.
     Per esempio:
     <informalexample>
      <programlisting role="php">
@@ -779,15 +784,15 @@
     istruzioni contenute nei blocchi case. Se $i � uguale a 1,
     PHP eseguir� le istruzioni degli ultimi due blocchi case e
     solamente se $i � uguale a 2 otterremo il risultato voluto
-    e si visualizzer� solo '$i � uguale a 2'.
-    Pertanto � importante non dimenticare l'istruzione <literal>break</literal> 
+    e si visualizzer� solo '$i � uguale a 2'. Pertanto
+    � importante non dimenticare l'istruzione <literal>break</literal>
     (anche se in alcuni casi potr� essere necessario non utilizzarla).
    </simpara>
    <simpara>
     In un'istruzione <literal>switch</literal>, la condizione in parentesi
     viene valutata una sola volta e il risultato viene confrontato con
-    ciascun ramo <literal>case</literal>. Utilizzando <literal>elseif</literal>, 
-    la ondizione viene valutata una seconda volta. Se tale condizione � pi�
+    ciascun ramo <literal>case</literal>. Utilizzando <literal>elseif</literal>,
+    la condizione viene valutata una seconda volta. Se tale condizione � pi�
     complessa di un semplice confronto e/o � in un ciclo piuttosto pesante,
     l'uso di <literal>switch</literal> dovrebbe garantire un minor tempo di 
esecuzione.
    </simpara>
@@ -801,10 +806,10 @@
     case 0:
     case 1:
     case 2:
-        print "i is less than 3 but not negative";
+        print "i � minore di 3 ma non negativo";
         break;
     case 3:
-        print "i is 3";
+        print "i � 3";
 }
 ]]>
      </programlisting>
@@ -812,8 +817,8 @@
    </para>
    <para>
     Un blocco case speciale � il il blocco case di default.
-    Uguagli tutte le condizioni non uguagliate nei blocchi case
-    precedenti e dev'essere l'ultimo blocco <literal>case</literal> statement. Per 
esempio:
+    Uguaglia tutte le condizioni non uguagliate nei blocchi case precedenti
+    e dev'essere l'ultimo blocco <literal>case</literal>. Per esempio:
    <informalexample>
      <programlisting role="php">
 <![CDATA[
@@ -828,21 +833,21 @@
         print "i � uguale a 2";
         break;
     default:
-        print "i non � ugluale a 0, 1 o 2";
+        print "i � diverso da 0, 1 o 2";
 }
 ]]>
      </programlisting>
     </informalexample>
    </para>
    <para>
-    L'espressione in un ramo case <literal>case</literal> pu� essere
+    L'espressione in un ramo <literal>case</literal> pu� essere
     qualsiasi espressione il cui valore sar� di tipo intero, decimale,
     numerico e stringa. Array e oggetti (objects) non sono ammessi
     a meno che non siano dereferenziati a un tipo di dato semplice tra quelli 
precedentemente elencati.
    </para>
    <para>
     Come per altre strutture di controllo � possibile utilizzare una sintassi
-    alternativa. Si veda 
+    alternativa. Si veda
     <link linkend="control-structures.alternative-syntax">Sintassi alternativa per le 
strutture di controllo</link>
     per ulteriori esempi.
     <informalexample>
@@ -859,7 +864,7 @@
         print "i � uguale a 2";
         break;
     default:
-        print "i non � uguale a 0, 1 o 2";
+        print "i � diverso da 0, 1 o 2";
 endswitch;
 ]]>
      </programlisting>
@@ -872,8 +877,8 @@
    <para>
     Il costrutto <literal>declare</literal> si usa per definire
     direttive di esecuzione per blocchi di istruzioni.
-    La sintassi � simile alla 
-    sintassi di altre strutture di controllo:
+    La sintassi � simile alla sintassi
+    di altre strutture di controllo:
     <informalexample>
      <programlisting>
 <![CDATA[
@@ -886,48 +891,48 @@
     La sezione <literal>direttiva</literal> permette di
     impostare il comportamento del blocco <literal>declare</literal>
     .
-    Attualemente � riconosciuta una sola direttiva: la
+    Attualmente � riconosciuta una sola direttiva: la
     direttiva <literal>ticks</literal>. (Fare riferimento pi� in basso per ulteriori
     informazioni relative alla
-    direttiva 
+    direttiva
     <link linkend="control-structures.declare.ticks">ticks</link>)
    </para>
    <para>
-    La parte <literal>istruzione</literal> del
-    blocco <literal>declare</literal> verr� eseguita. Come
+    Verr� eseguita la parte <literal>istruzione</literal> del
+    blocco <literal>declare</literal> - come
     verr� eseguita e quali effetti collaterali emergeranno durante l'esecuzione
     potr� dipendere dalla direttiva impostata nel
     blocco <literal>direttiva</literal>.
    </para>
    <sect2 id="control-structures.declare.ticks">
     <title>Ticks</title>
-    <para>A tick is an event that occurs for every
-    <replaceable>N</replaceable> low-level statements executed
-    by the parser within the <literal>declare</literal> block.
-    The value for <replaceable>N</replaceable> is specified
-    using <literal>ticks=<replaceable>N</replaceable></literal>
-    within the <literal>declare</literal> blocks's
-    <literal>directive</literal> section.
+    <para>Un tick � un evento che si verifica per ogni
+    <replaceable>N</replaceable> istruzioni di basso livello eseguite
+    dal parser all'interno del blocco <literal>declare</literal>.
+    Il valore per <replaceable>N</replaceable> viene specificato
+    usando <literal>ticks=<replaceable>N</replaceable></literal>
+    all'interno della sezione <literal>direttiva</literal> del blocco
+    <literal>declare</literal>.
    </para>
    <para>
-    The event(s) that occurs on each tick is specified using the
-    <function>register_tick_function</function>. See the example 
-    below for more details. Note that more than one event can occur
-    for each tick.
+    L'evento (o gli eventi) che si verifica su ogni tick � specificato usando
+    <function>register_tick_function</function>. Vedere l'esempio
+    pi� in basso per ulteriori dettagli. Notare che pu� verificarsi pi� di un evento
+    per ogni tick.
    </para>
    <para>
     <example>
-     <title>Profile a section of PHP code</title>
+     <title>Segue una sezione di codice PHP</title>
      <programlisting role="php">
 <![CDATA[
 <pre>
 <?php
-// A function that records the time when it is called
+// Una funzione che registra il tempo quando viene chiamata
 function profile ($dump = FALSE)
 {
     static $profile;
 
-    // Return the times stored in profile, then erase it
+    // Restituisce il tempo immagazinato in $profile, successivamente lo cancella
     if ($dump) {
         $temp = $profile;
         unset ($profile);
@@ -937,578 +942,464 @@
     $profile[] = microtime ();
 }
 
-// Set up a tick handler
+// Imposta un tick handler
 register_tick_function("profile");
 
-// Initialize the function before the declare block
+// Inizializza la funzione prima del blocco declare
 profile ();
 
-// Run a block of code, throw a tick every 2nd statement
-declare (ticks=2) {
+// Esegue un blocco di codice, attraverso un tick ogni seconda istruzione
+declare (ticks = 2) {
     for ($x = 1; $x < 50; ++$x) {
         echo similar_text (md5($x), md5($x*$x)), "&lt;br&gt;";
     }
 }
 
-// Display the data stored in the profiler
+// Mostra i dati immagazionati nel profilo
 print_r (profile (TRUE));
 ?>
 </pre>
 ]]>
      </programlisting>
     </example>
-    The example profiles the PHP code within the 'declare'
-    block, recording the time at which every second low-level
-    statement in the block was executed. This information can
-    then be used to find the slow areas within particular
-    segments of code. This process can be performed using other
-    methods: using ticks is more convenient and easier to
-    implement.
+    L'esempio descrive il codice PHP all'interno del blocco 'declare',
+    registrando il tempo in cui � stata eseguita ogni seconda istruzione
+    di basso livello. Questa informazione pu�
+    poi essere usata per trovare le aree lente all'interno di particolari
+    segmenti di codice. Questo processo pu� essere ottimizzato usando altri
+    metodi: usando i tick � pi� conveniente e facile da
+    implementare.
    </para>
    <simpara>
-    Ticks are well suited for debugging, implementing simple
-    multitasking, backgrounded I/O and many other tasks.
+    I tick sono ben adeguati per il debugging, l'implementazione di semplici
+    multitasking, backgrounded I/O e molti altri compiti.
    </simpara>
    <simpara>
-    See also <function>register_tick_function</function> and
+    Vedere anche <function>register_tick_function</function> e
     <function>unregister_tick_function</function>.
    </simpara>
    </sect2>
   </sect1>
-  
-  <sect1 id="function.require">
-   <title><function>require</function></title>
-   <simpara>
-    The <function>require</function> statement replaces itself with
-    the specified file, much like the C preprocessor's
-    <literal>#include</literal> works.
-   </simpara>
-   <simpara>
-    If "URL fopen wrappers" are enabled in PHP (which they are in the
-    default configuration), you can specify the file to be
-    <function>require</function>ed using an URL instead of a local
-    pathname. See <link linkend="features.remote-files">Remote
-    files</link> and <function>fopen</function> for more information.
-   </simpara>
+
+  <sect1 id="function.return">
+   <title>return</title>
    <simpara>
-    An important note about how this works is that when a file is
-    <function>include</function>ed or <function>require</function>ed,
-    parsing drops out of PHP mode and into HTML mode at the beginning
-    of the target file, and resumes PHP mode again at the end. For
-    this reason, any code inside the target file which should be
-    executed as PHP code must be enclosed within <link
-    linkend="language.basic-syntax.phpmode">valid PHP start and end
-    tags</link>.
+    Se viene chiamato all'interno di una funzione, l'istruzione 
+<function>return</function>
+    termina immediatamente l'esecuzione della funzione corrente, e
+    restituisce il suo argomento come valore della funzione
+    chiamata. <function>return</function> terminer� anche l'esecuzione di 
+un'istruzione
+    <function>eval</function> o di un file di script.
+   </simpara>
+   <simpara>
+    Se viene chiamato in uno scope globale, allora verr� terrminata l'esecuzione
+    del file di script corrente. Nel caso in cui il file di script corrente sia un 
+file chiamato da
+    <function>include</function> o <function>require</function>,
+    il controllo viene passato al file chiamante. Ciononostante, se
+    il file di script corrente � un file chiamato da <function>include</function>, 
+allora
+    il valore dato da <function>return</function> verr� restituito
+    come valore della chiamata <function>include</function>. Se
+    viene chiamato <function>return</function> all'interno del file di script
+    principale, allora l'esecuzione dello script terminer�. Se il file di script 
+corrente
+    � stato nominato da <link
+    linkend="ini.auto-prepend-file">auto_prepend_file</link> o <link
+    linkend="ini.auto-append-file">auto_append_file</link>
+    con le opzioni di configurazione nel <link linkend="configuration.file">
+    file di configurazione</link>, allora l'esecuzione di quello script
+    termina.
    </simpara>
-   <simpara>
-    <function>require</function> is not actually a function in PHP;
-    rather, it is a language construct. It is subject to some
-    different rules than functions are. For instance,
-    <function>require</function> is not subject to any containing
-    control structures. For another, it does not return any value;
-    attempting to read a return value from a
-    <function>require</function> call results in a parse error.
-   </simpara>
-   <simpara>
-    Unlike <function>include</function>, <function>require</function>
-    will <emphasis>always</emphasis> read in the target file,
-    <emphasis>even if the line it's on never executes</emphasis>. If
-    you want to conditionally include a file, use
-    <function>include</function>. The conditional statement won't
-    affect the <function>require</function>. However, if the line on
-    which the <function>require</function> occurs is not executed,
-    neither will any of the code in the target file be executed.
+   <simpara>Per maggiori informazioni, consultare <link
+   linkend="functions.returning-values">Valori restituiti</link>.
    </simpara>
+   <note>
+    <simpara>
+     Notate che poich� <function>return</function> � un costrutto di linguaggio
+     e non una funzione, le parentesi che circondano i suoi
+     argomenti <emphasis>non</emphasis> sono richieste --infatti, �
+     pi� comune evitarle che usarle, nonostante ci�
+     non c'� motivo di preferire un modo o l'altro.
+    </simpara>
+   </note>
+  </sect1>
+
+
+ <sect1 id="function.require">
+   <title><function>require</function></title>
+
    <simpara>
-    Similarly, looping structures do not affect the behaviour of
-    <function>require</function>. Although the code contained in the
-    target file is still subject to the loop, the
-    <function>require</function> itself happens only once.
+    L'istruzione <function>require</function> include e valuta
+    il file specifico.
    </simpara>
-   <para>
-    This means that you can't put a <function>require</function>
-    statement inside of a loop structure and expect it to include the
-    contents of a different file on each iteration. To do that, use an
-    <function>include</function> statement.
-    <informalexample>
-     <programlisting role="php">
-<![CDATA[
-require ('header.inc');
-]]>
-     </programlisting>
-    </informalexample>
-   </para>
    <simpara>
-    When a file is <function>require</function>ed, the code it
-    contains inherits the variable scope of the line on which the
-    <function>require</function> occurs. Any variables available at
-    that line in the calling file will be available within the called
-    file. If the <function>require</function> occurs inside a
-    function within the calling file, then all of the code contained
-    in the called file will behave as though it had been defined
-    inside that function.
+     <function>require</function> include e valuta uno specifico file.
+     Informazioni dettagliate su come funziona quest'inclusione sono descritte nella
+     documentazione di <function>include</function>.
+   </simpara>
+   <simpara>
+     <function>require</function> e <function>include</function>
+     sono identiche in ogni senso eccetto per come esse trattano gli errori.
+     <function>include</function> produce un
+     <link linkend="internal.e-warning">Warning</link> mentre
+     <function>require</function> restituisce un <link linkend="internal.e-error">
+     Fatal Error</link>. In altre parole, non esitate ad usare
+     <function>require</function> se volete che un file mancante fermi l'esecuzione
+     della pagina. <function>include</function> non si comporta in questo modo, lo
+     script continuer� nonostante tutto. Assicuratevi di avere un appropriato
+     <link linkend="ini.include-path">include_path</link> impostato a dovere.
    </simpara>
    <para>
-    If the <function>require</function>ed file is called via HTTP
-    using the fopen wrappers, and if the target server interprets the
-    target file as PHP code, variables may be passed to the
-    <function>require</function>ed file using an URL request string as
-    used with HTTP GET. This is not strictly speaking the same thing
-    as <function>require</function>ing the file and having it inherit
-    the parent file's variable scope; the script is actually being run
-    on the remote server and the result is then being included into
-    the local script.
-    <informalexample>
+    <example>
+     <title>Esempio di base con <function>require</function></title>
      <programlisting role="php">
 <![CDATA[
-/* This example assumes that someserver is configured to parse .php
- * files and not .txt files. Also, 'works' here means that the variables
- * $varone and $vartwo are available within the require()ed file. */
+<?php
 
-/* Won't work; file.txt wasn't handled by someserver. */
-require ("http://someserver/file.txt?varone=1&vartwo=2";);
+require 'prepend.php';
 
-/* Won't work; looks for a file named 'file.php?varone=1&amp;vartwo=2'
- * on the local filesystem. */
-require ("file.php?varone=1&vartwo=2");
+require $qualche_file;
 
-/* Works. */
-require ("http://someserver/file.php?varone=1&vartwo=2";);
+require ('qualche_file.txt');
 
-$varone = 1;
-$vartwo = 2;
-require ("file.txt");  /* Works. */
-require ("file.php");  /* Works. */
+?>
 ]]>
      </programlisting>
-    </informalexample>
+   </example>
    </para>
    <simpara>
-    In PHP 3, it is possible to execute a <literal>return</literal>
-    statement inside a <function>require</function>ed file, as long as
-    that statement occurs in the global scope of the
-    <function>require</function>ed file. It may not occur within any
-    block (meaning inside braces ({}). In PHP 4, however, this ability
-    has been discontinued. If you need this functionality, see
-    <function>include</function>.
+    Vedere la documentazione di <function>include</function> per pi� esempi.
    </simpara>
+   <note>
+    <simpara>
+     Prima di PHP 4.0.2, si applica la seguente logica: <function>require</function>
+     tenter� sempre di leggere il file chiamato, anche se la riga su cui si trova non 
+verr� mai eseguita.
+     L'istruzione condizionale non avr� effetto su <function>require</function>. 
+Comunque,
+     se la riga su cui si verifica <function>require</function> non viene eseguita,
+     non sar� eseguito nemmeno il codice del file incluso. Similmente, le strutture
+     cicliche non avranno effetto sul comportamento di <function>require</function>. 
+Sebbene
+     il codice contenuto nel file incluso � ancora soggetto a ciclo,
+     <function>require</function> stesso si verifica solo una volta.
+    </simpara>
+   </note>
    <simpara>
-    See also <function>include</function>, <function>require_once</function>,
-    <function>include_once</function>, <function>readfile</function>,
-    and <function>virtual</function>.
+    Vedere anche <function>include</function>, <function>require_once</function>,
+    <function>include_once</function>, <function>eval</function>,
+    <function>file</function>, <function>readfile</function>,
+    <function>virtual</function> e <link 
+linkend="ini.include-path">include_path</link>.
    </simpara>
   </sect1>
 
-  <sect1 id="function.include">
+ <sect1 id="function.include">
    <title><function>include</function></title>
    <simpara>
-    The <function>include</function> statement includes and evaluates
-    the specified file.
-   </simpara>
-   <simpara>
-    If "URL fopen wrappers" are enabled in PHP (which they are in the
-    default configuration), you can specify the file to be
-    <function>include</function>ed using an URL instead of a local
-    pathname. See <link linkend="features.remote-files">Remote
-    files</link> and <function>fopen</function> for more information.
+    L'istruzione <function>include</function> include e valuta
+    il file specificato.
    </simpara>
    <simpara>
-    An important note about how this works is that when a file is
-    <function>include</function>ed or <function>require</function>ed,
-    parsing drops out of PHP mode and into HTML mode at the beginning
-    of the target file, and resumes again at the end. For this reason,
-    any code inside the target file which should be executed as PHP
-    code must be enclosed within <link
-    linkend="language.basic-syntax.phpmode">valid PHP start and end
-    tags</link>.
+     La documentazione seguente si applica anche a <function>require</function>.
+     I due costrutti sono identici in ogni aspetto eccetto per come essi trattano
+     gli errori. <function>include</function> produce un
+     <link linkend="internal.e-warning">Warning</link> mentre 
+<function>require</function>
+     restituisce un <link linkend="internal.e-error">Fatal Error</link>.
+     In altre parole, usate <function>require</function> se volete che
+     un file mancante fermi l'esecuzione della pagina. <function>include</function>
+     non si comporta in questo modo, lo script continuer� nonostante tutto. 
+Assicuratevi di avere un
+     appropriato <link linkend="ini.include-path">include_path</link> impostato a 
+dovere.
+   </simpara>
+   <simpara>
+     Quando un file viene incluso, il codice che esso contiene eredita lo
+     <link linkend="language.variables.scope">scope delle variabili</link> della
+     riga in cui si verifica l'inclusione. Qualsiasi variabile disponibile in quella 
+riga
+     nella chiamata al file sar� disponibile all'interno del file chiamato, da
+     quel punto in avanti.
    </simpara>
    <para>
-    This happens each time the <function>include</function> statement
-    is encountered, so you can use an <function>include</function>
-    statement within a looping structure to include a number of
-    different files.
-    <informalexample>
-     <programlisting role="php">
-<![CDATA[
-$files = array ('first.inc', 'second.inc', 'third.inc');
-for ($i = 0; $i < count($files); $i++) {
-    include $files[$i];
-}
-]]>
-     </programlisting>
-    </informalexample>
-   </para>
-   <para>
-    <function>include</function> differs from
-    <function>require</function> in that the include statement is
-    re-evaluated each time it is encountered (and only when it is
-    being executed), whereas the <function>require</function>
-    statement is replaced by the required file when it is first
-    encountered, whether the contents of the file will be evaluated or
-    not (for example, if it is inside an <link
-    linkend="control-structures.if">if</link> statement whose
-    condition evaluated to &false;).
-   </para>
-   <para>
-    Because <function>include</function> is a special language
-    construct, you must enclose it within a statement block if it is
-    inside a conditional block.
-    <informalexample>
-     <programlisting role="php">
+     <example>
+      <title>Esempio di base con <function>include</function></title>
+      <programlisting role="php">
 <![CDATA[
-/* This is WRONG and will not work as desired. */
+vars.php
+<?php
 
-if ($condition)
-    include($file);
-else
-    include($other);
+$colore = 'verde';
+$frutto = 'mela';
 
-/* This is CORRECT. */
+?>
 
-if ($condition) {
-    include($file);
-} else {
-    include($other);
-}
+test.php
+<?php
+
+echo "Una $frutto $colore"; // Una
+
+include 'vars.php';
+
+echo "Una $frutto $colore"; // Una mela verde
+
+?>
 ]]>
-     </programlisting>
-    </informalexample>
+      </programlisting>
+     </example>
    </para>
    <simpara>
-    In both PHP 3 and PHP 4, it is possible to execute a
-    <literal>return</literal> statement inside an
-    <function>include</function>ed file, in order to terminate
-    processing in that file and return to the script which called
-    it. Some differences in the way this works exist, however. The
-    first is that in PHP 3, the <literal>return</literal> may not
-    appear inside a block unless it's a function block, in which case
-    the <literal>return</literal> applies to that function and not the
-    whole file. In PHP 4, however, this restriction does not
-    exist. Also, PHP 4 allows you to return values from
-    <function>include</function>ed files. You can take the value of
-    the <function>include</function> call as you would a normal
-    function. This generates a parse error in PHP 3.
+     Se l'inclusione si verifica dentro una funzione all'interno del file chiamato,
+     allora tutto il codice contenuto nel file chiamato si comporter� come
+     se esso sia stato definito all'interno di una funzione. Cos�, esso seguir�
+     lo scope delle variabili di quella funzione.
    </simpara>
-   <example>
-    <title><function>include</function> in PHP 3 and PHP 4</title>
-    <para>
-     Assume the existence of the following file (named
-     <filename>test.inc</filename>) in the same directory as the main
-     file:
-     <programlisting role="php">
+   <para>
+     <example>
+     <title>Inclusione all'interno di funzioni</title>
+      <programlisting role="php">
 <![CDATA[
 <?php
-echo "Before the return <br>\n";
-if (1) {
-    return 27;
+
+function foo()
+{
+global $frutto;
+
+    include 'vars.php';
+
+    echo "Una $frutto $colore";
 }
-echo "After the return <br>\n";
-?>
-]]>
-     </programlisting>
-    </para>
-    <para>
-     Assume that the main file (<filename>main.html</filename>)
-     contains the following:
-     <programlisting role="php">
-<![CDATA[
-<?php
-$retval = include ('test.inc');
-echo "File returned: '$retval'<br>\n";
-?>
-]]>
-     </programlisting>
-    </para>
-    <para>
-     When <filename>main.html</filename> is called in PHP 3, it will
-     generate a parse error on line 2; you can't take the value of an
-     <function>include</function> in PHP 3. In PHP 4, however, the
-     result will be:
-     <screen>
-Before the return
-File returned: '27'
-     </screen>
-    </para>
-    <para>
-     Now, assume that <filename>main.html</filename> has been altered
-     to contain the following:
-     <programlisting role="php">
-<![CDATA[
-<?php
-include ('test.inc');
-echo "Back in main.html<br>\n";
+
+/* vars.php � nello scope di foo() cos�    *
+ * $colore NON � disponibile fuori di      *
+ * questo scope. $frutto si perch� � stato *
+ * dichiarato globale.                     */
+
+foo();                        // Una mela verde
+echo "Una $frutto $colore";   // Una mela
+
 ?>
 ]]>
      </programlisting>
-    </para>
-    <para>
-     In PHP 4, the output will be:
-     <screen>
-Before the return
-Back in main.html
-     </screen>
-     However, PHP 3 will give the following output:
-     <screen>
-Before the return
-27Back in main.html
-
-Parse error: parse error in /home/torben/public_html/phptest/main.html on line 5
-     </screen>
-    </para>
-    <para>
-     The above parse error is a result of the fact that the
-     <literal>return</literal> statement is enclosed in a non-function
-     block within <filename>test.inc</filename>. When the return is
-     moved outside of the block, the output is:
-     <screen>
-Before the return
-27Back in main.html
-     </screen>
-    </para>
-    <para>
-     The spurious '27' is due to the fact that PHP 3 does not support
-     <literal>return</literal>ing values from files like that.
-    </para>
-   </example>
+    </example>
+   </para>
    <simpara>
-    When a file is <function>include</function>ed, the code it
-    contains inherits the variable scope of the line on which the
-    <function>include</function> occurs. Any variables available at
-    that line in the calling file will be available within the called
-    file. If the <function>include</function> occurs inside a
-    function within the calling file, then all of the code contained
-    in the called file will behave as though it had been defined
-    inside that function.
+     Quando un file viene incluso, il parsing esce dalla modalit� PHP e
+     entra in modalit� HTML all'inizio del file incluso, e riprende
+     alla fine. Per questa ragione, qualunque codice all'interno del
+     file incluso che dovrebbe essere eseguito come codice PHP deve essere incluso 
+all'interno
+     dei <link linkend="language.basic-syntax.phpmode">tag PHP validi di apertura
+     e chiusura</link>.
+   </simpara>
+   <simpara>
+     Se "<link linkend="ini.allow-url-fopen">URL fopen wrappers</link>"
+     nel PHP sono abilitati (come nella configurazione di default),
+     potete specificare il file da includere usando un URL (via HTTP)
+     invece che un percorso locale. Se il server chiamato interpreta
+     il file incluso come codice PHP, le variabili possono essere passate
+     al file incluso usando una stringa di richiesta URL come con l'utilizzo di HTTP 
+GET. Non �
+     proprio parlare della stessa cosa includere il file e averlo
+     ereditato dallo scope di variabili del file chiamante; lo script � stato 
+attualmente
+     eseguito su un server remoto e il risultato � poi stato
+     incluso nello script locale.
    </simpara>
    <para>
-    If the <function>include</function>ed file is called via HTTP
-    using the fopen wrappers, and if the target server interprets the
-    target file as PHP code, variables may be passed to the
-    <function>include</function>ed file using an URL request string as
-    used with HTTP GET. This is not strictly speaking the same thing
-    as <function>include</function>ing the file and having it inherit
-    the parent file's variable scope; the script is actually being run
-    on the remote server and the result is then being included into
-    the local script.
-    <informalexample>
+    <example>
+     <title><function>include</function> attraverso HTTP</title>
      <programlisting role="php">
 <![CDATA[
-/* This example assumes that someserver is configured to parse .php
- * files and not .txt files. Also, 'works' here means that the variables
- * $varone and $vartwo are available within the include()ed file. */
-
-/* Won't work; file.txt wasn't handled by someserver. */
-include ("http://someserver/file.txt?varone=1vartwo=2";);
-
-/* Won't work; looks for a file named 'file.php?varone=1&vartwo=2'
- * on the local filesystem. */
-include ("file.php?varone=1&amp;vartwo=2");
+<?php
 
-/* Works. */
-include ("http://someserver/file.php?varone=1&vartwo=2";);
+/* Questo esempio assume che www.example.com � configurato per eseguire file *
+ * .php e non file .txt. Anche, 'Funziona' qui significa che le variabili    *
+ * $foo e $bar sono disponibili all'interno del file incluso.                */
+
+// Non funzioner�; file.txt non � stato trattato da www.example.com come PHP
+include 'http://www.example.com/file.txt?foo=1&bar=2';
+
+// Non funzioner�; cercare un file chiamato'file.php?foo=1&bar=2' nel
+// filesystem locale.
+include 'file.php?foo=1&bar=2';
+
+// Funziona.
+include 'http://www.example.com/file.php?foo=1&bar=2';
+
+$foo = 1;
+$bar = 2;
+include 'file.txt';  // Funziona.
+include 'file.php';  // Funziona.
 
-$varone = 1;
-$vartwo = 2;
-include ("file.txt");  /* Works. */
-include ("file.php");  /* Works. */
+?>
 ]]>
      </programlisting>
-    </informalexample>
+    </example>
+     Vedere anche <link linkend="features.remote-files">Remote files</link>,
+     <function>fopen</function> e <function>file</function> per informazioni
+     correlate.
    </para>
-   <simpara>
-    See also <function>require</function>, <function>require_once</function>,
-    <function>include_once</function>, <function>readfile</function>,
-    and <function>virtual</function>.
-   </simpara>
-  </sect1>
-
-  <sect1 id="function.require-once">
-   <title><function>require_once</function></title>
    <para>
-    The <function>require_once</function> statement replaces
-    itself with the specified file, much like the C preprocessor's
-    <literal>#include</literal> works, and in that respect is
-    similar to the <function>require</function> statement. The main
-    difference is that in an inclusion chain, the use of
-    <function>require_once</function> will assure that the code is
-    added to your script only once, and avoid clashes with variable
-    values or function names that can happen.
+     Poich� <function>include</function> e <function>require</function>
+     sono speciali costrutti di linguaggio, dovete includerli all'interno di
+     blocchi di istruzioni se si trovano in un blocco condizionale.
    </para>
    <para>
-     For example, if you create the following 2 include files
-     <literal>utils.inc</literal> and <literal>foolib.inc</literal>
-     <example>
-     <title>utils.inc</title>
+    <example>
+     <title>include() e i blocchi condizionali</title>
      <programlisting role="php">
 <![CDATA[
 <?php
-define("PHPVERSION", floor(phpversion()));
-echo "GLOBALS ARE NICE\n";
-function goodTea()
-{
-    return "Oolong tea tastes good!";
+
+// Questo NON VA BENE e non funzioner� come desiderato.
+if ($condizione)
+    include $file;
+else
+    include $un_altro;
+
+
+// Questo � CORRETTO.
+if ($condizione) {
+    include $file;
+} else {
+    include $un_altro;
 }
+
 ?>
 ]]>
      </programlisting>
-     </example>
-     <example>
-     <title>foolib.inc</title>
-     <programlisting role="php">
+    </example>
+   </para>
+   <simpara>
+    Trattamento dei valori restituiti: � possibile eseguire un'istruzione 
+<function>return</function>
+    in un file incluso per terminare l'esecuzione di quel
+    file e restituirlo allo script che l'ha chiamato. � anche possibile restituire
+    valori dai file inclusi. Potete prendere il valore di una chiamata di inclusione 
+come
+    fareste con una normale funzione.
+   </simpara>
+   <note>
+    <simpara>
+     In PHP 3, return potrebbe non apparire in un blocco a meno che esso sia
+     un blocco di funzione, nel qual caso <function>return</function> si applica
+     a quella funzione e non all'intero file.
+    </simpara>
+   </note>
+   <para>
+    <example>
+     <title><function>include</function> and the <function>return</function> 
+statement</title>
+      <programlisting role="php">
 <![CDATA[
+return.php
 <?php
-require ("utils.inc");
-function showVar($var)
-{
-    if (PHPVERSION == 4) {
-        print_r($var);
-    } else {
-        var_dump($var);
-    }
-}
 
-// bunch of other functions ...
+$var = 'PHP';
+
+return $var;
+
 ?>
-]]>
-     </programlisting>
-     </example>
-     And then you write a script <literal>cause_error_require.php</literal>
-     <example>
-     <title>cause_error_require.php</title>
-     <programlisting role="php">
-<![CDATA[
+
+noreturn.php
 <?php
-require("foolib.inc");
-/* the following will generate an error */
-require("utils.inc");
-$foo = array("1",array("complex","quaternion"));
-echo "this is requiring utils.inc again which is also\n";
-echo "required in foolib.inc\n";
-echo "Running goodTea: ".goodTea()."\n";
-echo "Printing foo: \n";
-showVar($foo);
+
+$var = 'PHP';
+
 ?>
-]]>
-     </programlisting>
-     </example>
-     When you try running the latter one, the resulting ouptut will be (using
-     PHP 4.01pl2):
-     <informalexample>
-     <screen>
-<![CDATA[
-GLOBALS ARE NICE
-GLOBALS ARE NICE
 
-Fatal error:  Cannot redeclare goodTea() in utils.inc on line 5
-]]>
-     </screen>
-     </informalexample>
-     By modifying <literal>foolib.inc</literal> and
-     <literal>cause_errror_require.php</literal>
-     to use <function>require_once</function>
-     instead of <function>require</function> and renaming the
-     last one to <literal>avoid_error_require_once.php</literal>, we have:
-     <example>
-     <title>foolib.inc (fixed)</title>
-     <programlisting role="php">
-<![CDATA[
-...
-require_once("utils.inc");
-function showVar($var)
-{
-...
-]]>
-     </programlisting>
-     </example>
-     <example>
-     <title>avoid_error_require_once.php</title>
-     <programlisting role="php">
-<![CDATA[
-...
-require_once("foolib.inc");
-require_once("utils.inc");
-$foo = array("1",array("complex","quaternion"));
-...
-]]>
-     </programlisting>
-     </example>
-     And when running the latter, the output will be (using PHP 4.0.1pl2):
-     <informalexample>
-     <screen>
-<![CDATA[
-GLOBALS ARE NICE
-this is requiring globals.inc again which is also
-required in foolib.inc
-Running goodTea: Oolong tea tastes good!
-Printing foo:
-Array
-(
-    [0] => 1
-    [1] => Array
-        (
-            [0] => complex
-            [1] => quaternion
-        )
+testreturns.php
+<?php
 
-)
+$foo = include 'return.php';
+
+echo $foo; // stampa 'PHP'
+
+$bar = include 'noreturn.php';
+
+echo $bar; // stampa 1
+
+?>
 ]]>
-     </screen>
-     </informalexample>
-   </para>
-   <para>
-     Also note that, analogous to the behavior of the
-     <literal>#include</literal> of the C preprocessor, this statement
-     acts at "compile time", e.g. when the script is parsed and before it
-     is executed, and should not be used for parts of the script that need
-     to be inserted dynamically during its execution. You should use
-     <function>include_once</function> or <function>include</function>
-     for that purpose.
+      </programlisting>
+    </example>
    </para>
+   <simpara>
+    <literal>$bar</literal> ha valore <literal>1</literal> perch� l'inclusione
+    � stata eseguita con successo. Notare la differenza tra gli esempi sopra. Il 
+primo usa
+    <function>return</function> all'interno di un file incluso mentre l'altro no.
+    Pochi altri modi di "includere" file in variabili sono con
+    <function>fopen</function>, <function>file</function> o usando
+    <function>include</function> insieme con
+    <link linkend="ref.outcontrol">Output Control Functions</link>.
+   </simpara>
+
+   <simpara>
+    Vedere anche <function>require</function>, <function>require_once</function>,
+    <function>include_once</function>, <function>readfile</function>,
+    <function>virtual</function>, e
+    <link linkend="ini.include-path">include_path</link>.
+   </simpara>
+
+</sect1>
+
+ <sect1 id="function.require-once">
+   <title><function>require_once</function></title>
    <para>
-     For more examples on using <function>require_once</function> and
-     <function>include_once</function>, look at the PEAR code included in
-     the latest PHP source code distributions.
+    L'istruzione <function>require_once</function> include e valuta
+    il file specificato durante l'esecuzione dello script.
+    � un comportamento simile all'istruzione <function>require</function>,
+    con la sola differenza che se il codice di un file � stato
+    gi� incluso, esso non sar� incluso nuovamente. Vedere la documentazione di
+    <function>require</function> per maggiori informazioni su come funziona
+    quest'istruzione.
+   </para>
+   <para>
+    <function>require_once</function> dovrebbe essere usato nei casi dove
+    lo stesso file potrebbe essere incluso e valutato pi� di una volta durante
+    una particolare esecuzione di uno script, e volete essere sicuri  che esso sia
+    incluso esattamente una volta per evitare problemi con la ridefinizione di 
+funzioni,
+    riassegnazione di valori a variabili, etc.
+   </para>
+   <para>
+     Per esempi sull'utilizzo di <function>require_once</function> e
+     <function>include_once</function>, consultare il codice
+     <ulink url="&url.php.pear;">PEAR</ulink> incluso
+     nell'ultima distribuzione del codice sorgente di PHP.
    </para>
+   <note>
+    <para>
+     <function>require_once</function> � stato aggiunto in PHP 4.0.1pl2
+    </para>
+   </note>
    <para>
-    See also: <function>require</function>,
+    Vedere anche: <function>require</function>,
     <function>include</function>, <function>include_once</function>,
     <function>get_required_files</function>,
     <function>get_included_files</function>, <function>readfile</function>,
-    and <function>virtual</function>.
+    e <function>virtual</function>.
    </para>
   </sect1>
 
-  <sect1 id="function.include-once">
+ <sect1 id="function.include-once">
    <title><function>include_once</function></title>
    <para>
-    The <function>include_once</function> statement includes and evaluates
-    the specified file during the execution of the script.
-    This is a behavior similar to the <function>include</function> statement,
-    with the important difference that if the code from a file has already
-    been included, it will not be included again.
-   </para>
-   <para>
-    As mentioned in the <function>require_once</function> description, the
-    <function>include_once</function> should be used in the cases in which
-    the same file might be included and evaluated more than once during a
-    particular execution of a script, and you want to be sure that it is
-    included exactly once to avoid problems with function redefinitions,
-    variable value reassignments, etc.
-   </para>
-   <para>
-     For more examples on using <function>require_once</function> and
-     <function>include_once</function>, look at the PEAR code included in
-     the latest PHP source code distributions.
-   </para>
-   <para>
-     <function>include_once</function> was added in PHP 4.0.1pl2
+    L'istruzione <function>include_once</function> include e valuta
+    il file specificato durante l'esecuzione dello script.
+    � un comportamento simile all'istruzione <function>include</function>,
+    con la sola differenza che se il codice di un file � stato
+    gi� incluso, esso non sar� incluso nuovamente. Come suggerisce il nome,
+    esso sar� incluso solo una volta.
+   </para>
+   <para>
+    <function>include_once</function> dovrebbe essere usato nei casi dove
+    lo stesso file potrebbe essere incluso e valutato pi� di una volta durante
+    una particolare esecuzione di uno script, e volete essere sicuri  che esso sia
+    incluso esattamente una volta per evitare problemi con la ridefinizione di 
+funzioni,
+    riassegnazione di valori a variabili, etc.
+   </para>
+   <para>
+     Per maggiori esempi sull'utilizzo di <function>require_once</function> e
+     <function>include_once</function>, consultare il codice
+     <ulink url="&url.php.pear;">PEAR</ulink> incluso
+     nell'ultima distribuzione del codice sorgente di PHP.
    </para>
+   <note>
+    <para>
+     <function>include_once</function> � stato aggiunto in PHP 4.0.1pl2
+    </para>
+   </note>
    <para>
-    See also: <function>require</function>,
-    <function>include</function>, <function>require_once</function>,
+    Vedere anche <function>include</function>,
+    <function>require</function>, <function>require_once</function>,
     <function>get_required_files</function>,
     <function>get_included_files</function>, <function>readfile</function>,
-    and <function>virtual</function>.
+    e <function>virtual</function>.
    </para>
   </sect1>
 


Reply via email to