<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/language.operators.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'it',
  ),
  'this' => 
  array (
    0 => 'language.operators.assignment.php',
    1 => 'Operatori di assegnazione',
    2 => 'Operatori di assegnazione',
  ),
  'up' => 
  array (
    0 => 'language.operators.php',
    1 => 'Operatori',
  ),
  'prev' => 
  array (
    0 => 'language.operators.increment.php',
    1 => 'Operatori di incremento/decremento',
  ),
  'next' => 
  array (
    0 => 'language.operators.bitwise.php',
    1 => 'Operatori sui bit',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'it',
    'path' => 'language/operators/assignment.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="language.operators.assignment" class="sect1">
 <h2 class="title">Operatori di assegnazione</h2>
 <p class="simpara">
  L&#039;operatore di base dell&#039;assegnazione è &quot;=&quot;. Il primo impulso può
  essere quello di pensare che corrisponda a &quot;uguale a&quot;. Invece questo operatore significa che
  l&#039;operando a sinistra assume il valore dell&#039;espressione a
  destra (cioè, &quot;assegna il valore a&quot;).
 </p>
 <p class="para">
  Il valore di un&#039;espressione di assegnazione è il valore assegnato. Ovvero
  il valore di &quot;$a = 3&quot; è 3. Questo permette di fare qualche
  trucchetto:
  <div class="informalexample">
   <div class="example-contents">
<div class="annotation-interactive phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /><br />$a </span><span style="color: #007700">= (</span><span style="color: #0000BB">$b </span><span style="color: #007700">= </span><span style="color: #0000BB">4</span><span style="color: #007700">) + </span><span style="color: #0000BB">5</span><span style="color: #007700">; </span><span style="color: #FF8000">// $a è uguale a 9 ora, e $b è stato impostato a 4.<br /><br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
   </div>

  </div>
 </p>
 <p class="para">
  In aggiunta all&#039;operatore di base dell&#039;assegnazione, ci sono gli &quot;operatori
  combinati&quot; per tutta <a href="language.operators.php" class="link">l&#039;aritmetica binaria</a>
  e gli operatori di stringa
  che consentono di usare un valore in un&#039;espressione e poi impostare il suo
  valore al risultato di quell&#039;espressione. Per esempio:
  <div class="informalexample">
   <div class="example-contents">
<div class="annotation-interactive phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /><br />$a </span><span style="color: #007700">= </span><span style="color: #0000BB">3</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$a </span><span style="color: #007700">+= </span><span style="color: #0000BB">5</span><span style="color: #007700">; </span><span style="color: #FF8000">// imposta $a a 8, corrispondente a: $a = $a + 5;<br /></span><span style="color: #0000BB">$b </span><span style="color: #007700">= </span><span style="color: #DD0000">"Ciao "</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$b </span><span style="color: #007700">.= </span><span style="color: #DD0000">"come va?"</span><span style="color: #007700">; </span><span style="color: #FF8000">// imposta $b a "Ciao come va?", proprio come $b = $b . "come va?";<br /><br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
   </div>

  </div>
 </p>
 <p class="para">
  Si noti che l&#039;assegnazione copia la variabile originale nella nuova
  (assegnazione per valore), così i cambiamenti della prima non si verificheranno nell&#039;
  altra. Ciò può anche avere rilevanza se si ha bisogno di copiare
  un grande array in un ciclo molto stretto. 
 </p>
 <p class="para">
  Un&#039;eccezione al comportamento standard dell&#039;assegnazione per valore avviene
  con gli<span class="type"><a href="language.types.object.php" class="type object">object</a></span>, che sono assegnati per riferimento.
  Gli oggetti possono essere copiati esplicitamente attraverso la keyword <a href="language.oop5.cloning.php" class="link">clone</a>.
 </p>

 <div class="sect2" id="language.operators.assignment.reference">
  <h3 class="title">Assegnazione per referimento</h3>
  <p class="para">
   L&#039;assegnazione per riferimento è pure supportato, usando la sintassi
   &quot;<span class="computeroutput">$var = &amp;$othervar;</span>.
   &#039;Assegnazione per riferimento&#039; significa che entrambe le variabili finiscono con il puntare agli
   stessi dati, e nulla è copiato.
  </p>
  <p class="para">
   <div class="example" id="example-1">
    <p><strong>Example #1 Assegnare per riferimento</strong></p>
    <div class="example-contents">
<div class="annotation-interactive phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$a </span><span style="color: #007700">= </span><span style="color: #0000BB">3</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$b </span><span style="color: #007700">= &amp;</span><span style="color: #0000BB">$a</span><span style="color: #007700">; </span><span style="color: #FF8000">// $b è un riferimento ad $a<br /><br /></span><span style="color: #007700">print </span><span style="color: #DD0000">"</span><span style="color: #0000BB">$a</span><span style="color: #DD0000">\n"</span><span style="color: #007700">; </span><span style="color: #FF8000">// stampa 3<br /></span><span style="color: #007700">print </span><span style="color: #DD0000">"</span><span style="color: #0000BB">$b</span><span style="color: #DD0000">\n"</span><span style="color: #007700">; </span><span style="color: #FF8000">// stampa 3<br /><br /></span><span style="color: #0000BB">$a </span><span style="color: #007700">= </span><span style="color: #0000BB">4</span><span style="color: #007700">; </span><span style="color: #FF8000">// modifica $a<br /><br /></span><span style="color: #007700">print </span><span style="color: #DD0000">"</span><span style="color: #0000BB">$a</span><span style="color: #DD0000">\n"</span><span style="color: #007700">; </span><span style="color: #FF8000">// stampa 4<br /></span><span style="color: #007700">print </span><span style="color: #DD0000">"</span><span style="color: #0000BB">$b</span><span style="color: #DD0000">\n"</span><span style="color: #007700">; </span><span style="color: #FF8000">// stampa ugualmente 4, dal momento che $b è un riferimento ad $a, che è<br />            // stata modificata<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
    </div>

   </div>
  </p>
  <p class="para">
   L&#039;operatore <a href="language.oop5.basic.php#language.oop5.basic.new" class="link">new</a>
   restituisce automaticamente un riferimento, quindi assegnare il risultato di
   <a href="language.oop5.basic.php#language.oop5.basic.new" class="link">new</a> per riferimento è un errore.
  </p>
  <p class="para">
   <div class="informalexample">
    <div class="example-contents">
<div class="annotation-interactive phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /></span><span style="color: #007700">class </span><span style="color: #0000BB">C </span><span style="color: #007700">{}<br /><br /></span><span style="color: #0000BB">$o </span><span style="color: #007700">= &amp;new </span><span style="color: #0000BB">C</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
    </div>

    <p class="para">Il precedente esempio visualizzerà:</p>
    <div class="example-contents screen">
<div class="annotation-interactive cdata"><pre>
Parse error: syntax error, unexpected &#039;new&#039; (T_NEW) in …
</pre></div>
    </div>
   </div>
  </p>
  <p class="para">
   Ulteriori informazioni sui riferimenti e sul loro uso possono essere trovati
   nella sezione del manuale
   <a href="language.references.php" class="link">Spiegazioni sui riferimenti</a>.
  </p>
 </div>

 <div class="sect2" id="language.operators.assignment.arithmetic">
  <h3 class="title">Operatori di Assegnamento Aritmetici</h3>
  <table class="doctable informaltable">
   
    <thead>
     <tr>
      <th>Esempio</th>
      <th>Equivalente</th>
      <th>Operazione</th>
     </tr>

    </thead>

    <tbody class="tbody">
     <tr>
      <td>$a += $b</td>
      <td>$a = $a + $b</td>
      <td>Addizione</td>
     </tr>

     <tr>
      <td>$a -= $b</td>
      <td>$a = $a - $b</td>
      <td>Sottrazione</td>
     </tr>

     <tr>
      <td>$a *= $b</td>
      <td>$a = $a * $b</td>
      <td>Moltiplicazione</td>
     </tr>

     <tr>
      <td>$a /= $b</td>
      <td>$a = $a / $b</td>
      <td>Divisione</td>
     </tr>

     <tr>
      <td>$a %= $b</td>
      <td>$a = $a % $b</td>
      <td>Modulo</td>
     </tr>

     <tr>
      <td>$a **= $b</td>
      <td>$a = $a ** $b</td>
      <td>Esponenziale</td>
     </tr>

    </tbody>
   
  </table>

 </div>

 <div class="sect2" id="language.operators.assignment.bitwise">
  <h3 class="title">Operatori di Assegnazione Bit A Bit</h3>
  <table class="doctable informaltable">
   
    <thead>
     <tr>
      <th>Esempio</th>
      <th>Equivalente</th>
      <th>Operazione</th>
     </tr>

    </thead>

    <tbody class="tbody">
     <tr>
      <td>$a &amp;= $b</td>
      <td>$a = $a &amp; $b</td>
      <td>And Bit a Bit</td>
     </tr>

     <tr>
      <td>$a |= $b</td>
      <td>$a = $a | $b</td>
      <td>Or Bit a Bit</td>
     </tr>

     <tr>
      <td>$a ^= $b</td>
      <td>$a = $a ^ $b</td>
      <td>Xor Bit a Bit</td>
     </tr>

     <tr>
      <td>$a &lt;&lt;= $b</td>
      <td>$a = $a &lt;&lt; $b</td>
      <td>Shift a Sinistra</td>
     </tr>

     <tr>
      <td>$a &gt;&gt;= $b</td>
      <td>$a = $a &gt;&gt; $b</td>
      <td>Shift a Destra</td>
     </tr>

    </tbody>
   
  </table>

 </div>

 <div class="sect2" id="language.operators.assignment.other">
  <h3 class="title">Altri Operatori di Assegnamento</h3>
  <table class="doctable informaltable">
   
    <thead>
     <tr>
      <th>Esempio</th>
      <th>Equivalente</th>
      <th>Operazione</th>
     </tr>

    </thead>

    <tbody class="tbody">
     <tr>
      <td>$a .= $b</td>
      <td>$a = $a . $b</td>
      <td>Concatenazione di stringhe</td>
     </tr>

     <tr>
      <td>$a ??= $b</td>
      <td>$a = $a ?? $b</td>
      <td>Null Coalesce</td>
     </tr>

    </tbody>
   
  </table>

 </div>

 <div class="sect2" id="language.operators.assignment.see-also">
  <h3 class="title">Vedere anche:</h3>
  <p class="para">
   <ul class="simplelist">
    <li><a href="language.operators.arithmetic.php" class="link">operatori aritmetici</a></li>
    <li><a href="language.operators.bitwise.php" class="link">operatori bit a bit</a></li>
    <li><a href="language.operators.comparison.php#language.operators.comparison.coalesce" class="link">operatori null coalescing</a></li>
   </ul>
  </p>
 </div>
</div><?php manual_footer($setup); ?>