<?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 => 'de',
  ),
  'this' => 
  array (
    0 => 'language.operators.assignment.php',
    1 => 'Zuweisung',
    2 => 'Zuweisungsoperatoren',
  ),
  'up' => 
  array (
    0 => 'language.operators.php',
    1 => 'Operatoren',
  ),
  'prev' => 
  array (
    0 => 'language.operators.increment.php',
    1 => 'Inkrement und Dekrement',
  ),
  'next' => 
  array (
    0 => 'language.operators.bitwise.php',
    1 => 'Bit',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'de',
    '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">Zuweisungsoperatoren</h2>
 
 <p class="simpara">
  Der einfachste Zuweisungsoperator ist &quot;=&quot;. Wahrscheinlich kommt man als
  erstes auf die Idee, ihn mit &quot;ist gleich&quot; zu bezeichnen. Das ist falsch. In
  Wirklichkeit bedeutet er, dass dem linken Operanden der Wert des Ausdrucks
  auf der rechten Seite zugewiesen wird (man müsste ihn also mit &quot;wird gesetzt
  auf den Wert von&quot; übersetzen).
 </p>
 <p class="para">
  Der Wert eines Zuweisungs-Ausdruckes ist der zugewiesene Wert, d. h. der Wert
  des Ausdruckes &quot;<code class="literal">$a = 3</code>&quot; ist 3. Das erlaubt es, einige
  raffinierte Dinge anzustellen:
  <div class="example" id="example-1">
   <p><strong>Beispiel #1 Verschachtelte Zuweisungen</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">$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 ist nun gleich 9 und $b wurde auf den Wert 4 gesetzt.<br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">$a</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
   </div>

  </div>
 </p>
 <p class="para">
  Zusätzlich zu dem oben vorgestellten Zuweisungsoperator &quot;=&quot; gibt es
  &quot;kombinierte Operatoren&quot; für alle
  <a href="language.operators.php" class="link">binären, arithmetischen</a>,
  Array-Vereinigungs- und Zeichenketten-Operatoren, die es erlauben, den Wert
  einer Variablen in einem Ausdruck zu benutzen und dieser anschließend das
  Ergebnis des Ausdrucks als neuen Wert zuzuweisen. Zum Beispiel:
  <div class="example" id="example-2">
   <p><strong>Beispiel #2 Kombinierte Zuweisungen</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">$a </span><span style="color: #007700">+= </span><span style="color: #0000BB">5</span><span style="color: #007700">; </span><span style="color: #FF8000">// setzt $a auf den Wert 8, als ob wir geschrieben hätten: $a = $a + 5;<br /></span><span style="color: #0000BB">$b </span><span style="color: #007700">= </span><span style="color: #DD0000">"Hallo "</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$b </span><span style="color: #007700">.= </span><span style="color: #DD0000">"Du!"</span><span style="color: #007700">; </span><span style="color: #FF8000">// setzt $b auf den Wert "Hallo Du!", äquivalent zu<br /><br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">$a</span><span style="color: #007700">, </span><span style="color: #0000BB">$b</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
   </div>

  </div>
 </p>
 <p class="para">
  Man beachte, dass die Zuweisung nur den Wert der Ursprungsvariable der neuen
  Variable zuweist (Zuweisung als Wert, sie &quot;kopiert&quot;), weshalb sich
  Änderungen an der einen Variable nicht auf die andere auswirken werden. Das
  kann wichtig sein, wenn man ein großes Array o. ä. in einer Schleife
  kopieren muss.
 </p>
 <p class="para">
  Eine Ausnahme vom üblichen Wertzuweisungsverhalten in PHP stellen Objekte
  (<span class="type"><a href="language.types.object.php" class="type object">object</a></span>) dar, die per Referenz zugewiesen werden. Objekte
  können mit dem
  <a href="language.oop5.cloning.php" class="link">clone</a>-Schlüsselwort explizit
  kopiert werden.
 </p>

 <div class="sect2" id="language.operators.assignment.reference">
  <h3 class="title">Referenzzuweisung</h3>
  <p class="para">
   Referenzzuweisung wird ebenfalls unterstützt, unter Verwendung der
   &quot;<span class="computeroutput">$var = &amp;$othervar;</span>&quot; Syntax.
   Referenzzuweisung bedeutet, dass beide Variablen schließlich auf dieselben
   Daten zeigen, und nichts kopiert wurde.
  </p>
  <p class="para">
   <div class="example" id="example-3">
    <p><strong>Beispiel #3 Referenzzuweisung</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 ist eine Referenz auf $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">// gibt 3 aus<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">// gibt 3 aus<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">// ändere $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">// gibt 4 aus<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">// gibt ebenfalls 4 aus, da $b eine Referenz auf $a ist, das<br />              // geändert wurde<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
    </div>

   </div>
  </p>
  <p class="para">
   Der <a href="language.oop5.basic.php#language.oop5.basic.new" class="link">new</a>-Operator gibt
   automatisch eine Referenz zurück, sodass das Zuweisen des Ergebnisses von
   <a href="language.oop5.basic.php#language.oop5.basic.new" class="link">new</a> per Referenz ein Fehler
   ist.
  </p>
  <p class="para">
   <div class="example" id="example-4">
    <p><strong>Beispiel #4 new-Operator per Referenz</strong></p>
    <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>

    <div class="example-contents"><p>Das oben gezeigte Beispiel erzeugt folgende Ausgabe:</p></div>
    <div class="example-contents screen">
<div class="annotation-interactive cdata"><pre>
Parse error: syntax error, unexpected token &quot;;&quot;, expecting &quot;(&quot;
</pre></div>
    </div>
   </div>
  </p>
  <p class="para">
   Weitere Informationen zu Referenzen und ihren Anwendungsmöglichkeiten
   sind dem Handbuch-Abschnitt
   <a href="language.references.php" class="link">Referenzen erklärt</a> zu entnehmen.
  </p>
 </div>

 <div class="sect2" id="language.operators.assignment.arithmetic">
  <h3 class="title">Arithmetische Zuweisungsoperatoren</h3>
  <table class="doctable informaltable">
   
    <thead>
     <tr>
      <th>Beispiel</th>
      <th>Entsprechung</th>
      <th>Operation</th>
     </tr>

    </thead>

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

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

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

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

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

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

    </tbody>
   
  </table>

 </div>

 <div class="sect2" id="language.operators.assignment.bitwise">
  <h3 class="title">Bitweise Zuweisungsoperatoren</h3>
  <table class="doctable informaltable">
   
    <thead>
     <tr>
      <th>Beispiel</th>
      <th>Entsprechung</th>
      <th>Operation</th>
     </tr>

    </thead>

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

     <tr>
      <td>$a |= $b</td>
      <td>$a = $a | $b</td>
      <td>Oder</td>
     </tr>

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

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

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

    </tbody>
   
  </table>

 </div>

 <div class="sect2" id="language.operators.assignment.other">
  <h3 class="title">Andere Zuweisungspperatoren</h3>
  <table class="doctable informaltable">
   
    <thead>
     <tr>
      <th>Beispiel</th>
      <th>Entsprechung</th>
      <th>Operation</th>
     </tr>

    </thead>

    <tbody class="tbody">
     <tr>
      <td>$a .= $b</td>
      <td>$a = $a . $b</td>
      <td>Stringverknüpfung</td>
     </tr>

     <tr>
      <td>$a ??= $b</td>
      <td>$a = $a ?? $b</td>
      <td>Null-Zusammenführungsoperator</td>
     </tr>

    </tbody>
   
  </table>

 </div>

 <div class="sect2" id="language.operators.assignment.see-also">
  <h3 class="title">Siehe auch</h3>
  <p class="para">
   <ul class="simplelist">
    <li><a href="language.operators.arithmetic.php" class="link">Arithmetische Operatoren</a></li>
    <li><a href="language.operators.bitwise.php" class="link">Bit-Operatoren</a></li>
    <li><a href="language.operators.comparison.php#language.operators.comparison.coalesce" class="link">Null-Koaleszenz-Operator</a></li>
   </ul>
  </p>
 </div>
</div><?php manual_footer($setup); ?>