<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/language.variables.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'de',
  ),
  'this' => 
  array (
    0 => 'language.variables.basics.php',
    1 => 'Grundlegendes',
    2 => 'Grundlegendes',
  ),
  'up' => 
  array (
    0 => 'language.variables.php',
    1 => 'Variablen',
  ),
  'prev' => 
  array (
    0 => 'language.variables.php',
    1 => 'Variablen',
  ),
  'next' => 
  array (
    0 => 'language.variables.predefined.php',
    1 => 'Vordefinierte Variablen',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'de',
    'path' => 'language/variables.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="language.variables.basics" class="sect1">
   <h2 class="title">Grundlegendes</h2>

   <p class="simpara">
    Variablen werden in PHP durch ein Dollar-Zeichen ($) gefolgt vom Namen der
    Variable dargestellt. Bei Variablennamen wird zwischen Groß- und
    Kleinschreibung unterschieden (case-sensitive).
   </p>

   <p class="para">
    Ein gültiger Variablenname beginnt mit einem Buchstaben
    (<code class="literal">A-Z</code>, <code class="literal">a-z</code> oder die Bytes von 128 bis 255)
    oder einem Unterstrich (&quot;_&quot;), gefolgt von einer beliebigen Anzahl von
    Buchstaben, Zahlen oder Unterstrichen. Als regulärer Ausdruck
    (Regular Expression) würde das wie folgt ausgedrückt:
    <code class="code">^[a-zA-Z_\x80-\xff][a-zA-Z0-9_\x80-\xff]*$</code>
   </p>

   <blockquote class="note"><p><strong class="note">Hinweis</strong>: 
    <span class="simpara">
     PHP unterstützt keine Unicode-Variablennamen, aber einige
     Zeichenkodierungen (z. B. UTF-8) kodieren Zeichen so, dass alle Bytes eines
     Multi-Byte-Zeichens in den erlaubten Bereich fallen und somit einen
     gültigen Variablennamen darstellen.
    </span>
   </p></blockquote>

   <blockquote class="note"><p><strong class="note">Hinweis</strong>: 
    <span class="simpara">
     <code class="literal">$this</code> ist eine spezielle Variable, die nicht geändert
     werden kann. Vor PHP 7.1.0 war die indirekte Zuweisung, z. B. durch die
     Verwendung von <a href="language.variables.variable.php" class="link">variable
     Variablen</a>, möglich.
    </span>
   </p></blockquote>

   <div class="tip"><strong class="tip">Tipp</strong><p class="simpara">Siehe auch <a href="userlandnaming.php" class="xref">Userland-Namensregeln</a>.</p></div>

   <div class="example" id="example-1">
    <p><strong>Beispiel #1 Gültige Variablennamen</strong></p>
    <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$var </span><span style="color: #007700">= </span><span style="color: #DD0000">"du"</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$Var </span><span style="color: #007700">= </span><span style="color: #DD0000">"ich"</span><span style="color: #007700">;<br />echo </span><span style="color: #DD0000">"</span><span style="color: #0000BB">$var</span><span style="color: #DD0000">, </span><span style="color: #0000BB">$Var</span><span style="color: #DD0000">"</span><span style="color: #007700">;       </span><span style="color: #FF8000">// gibt "du, ich" aus<br /><br /></span><span style="color: #0000BB">$_4site </span><span style="color: #007700">= </span><span style="color: #DD0000">'noch nicht'</span><span style="color: #007700">;  </span><span style="color: #FF8000">// gültig, da Unterstrich am Anfang<br /></span><span style="color: #0000BB">$täbyte </span><span style="color: #007700">= </span><span style="color: #DD0000">'irgendwas'</span><span style="color: #007700">;   </span><span style="color: #FF8000">// gültig, da 'ä' dem (Erweiterten) ASCII-Wert 228 entspricht<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
    </div>

   </div>

   <div class="example" id="example-2">
    <p><strong>Beispiel #2 Ungültige Variablennamen</strong></p>
    <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /></span><span style="color: #007700">$</span><span style="color: #0000BB">4site </span><span style="color: #007700">= </span><span style="color: #DD0000">'noch nicht'</span><span style="color: #007700">;     </span><span style="color: #FF8000">// ungültig, da Anfang eine Zahl</span></span></code></div>
    </div>

   </div>

   <p class="simpara">
    PHP akzeptiert eine Folge von beliebigen Bytes als Variablennamen. Auf
    Variablennamen, die nicht den oben genannten Benennungsregeln entsprechen,
    kann nur dynamisch zur Laufzeit zugegriffen werden. Siehe
    <a href="language.variables.variable.php" class="link">variable Variablen</a>
    für Informationen, wie man auf sie zugreifen kann.
   </p>

   <div class="example" id="example-3">
    <p><strong>Beispiel #3 Zugriff auf unklare Variablennamen</strong></p>
    <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /></span><span style="color: #007700">${</span><span style="color: #DD0000">'ungueltiger-name'</span><span style="color: #007700">} = </span><span style="color: #DD0000">'bar'</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$name </span><span style="color: #007700">= </span><span style="color: #DD0000">'ungueltiger-name'</span><span style="color: #007700">;<br />echo ${</span><span style="color: #DD0000">'ungueltiger-name'</span><span style="color: #007700">}, </span><span style="color: #DD0000">" "</span><span style="color: #007700">, $</span><span style="color: #0000BB">$name</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="cdata"><pre>
bar bar
</pre></div>
    </div>
   </div>

   <p class="para">
    Standardmäßig wird Variablen immer ein Wert zugewiesen. Das heißt, wenn
    einer Variablen ein Ausdruck zugewiesen wird, wird der gesamte Inhalt des
    Originalausdrucks in die Zielvariable kopiert. Das bedeutet zum Beispiel,
    dass nach der Zuweisung des Wertes einer Variablen an eine andere die
    Änderung einer der Variablen keinen Einfluss auf die andere hat. Für
    weitere Informationen zu dieser Art der Zuordnung lesen Sie bitte das
    Kapitel unter
    <a href="language.expressions.php" class="link">Expressions / Ausdrücke</a>.
   </p>
   <p class="para">
    PHP bietet eine andere Möglichkeit der Wertzuweisung bei Variablen:
    <a href="language.references.php" class="link">Zuweisung durch Referenzierung</a>.
    Das bedeutet, dass der Wert der neuen Variablen eine Referenz zur
    Ursprungs-Variablen darstellt (mit anderen Worten: Der Wert ist ein Alias
    bzw. Zeiger auf den Inhalt der Ursprungsvariablen). Änderungen der neuen
    Variablen ändern auch deren Ursprungs-Variable und umgekehrt.
   </p>
   <p class="para">
    Für die Zuweisung per Referenz müssen Sie der Ursprungsvariablen, die Sie
    einer anderen Variablen zuweisen wollen, lediglich ein kaufmännisches Und
    (&amp;) voranstellen. Das folgende Code-Schnipsel wird zweimal
    &#039;<code class="literal">Ich heiße Bob</code>&#039; ausgeben:

    <div class="informalexample">
     <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$foo </span><span style="color: #007700">= </span><span style="color: #DD0000">'Bob'</span><span style="color: #007700">;             </span><span style="color: #FF8000">// 'Bob' der Variablen $foo zuweisen.<br /></span><span style="color: #0000BB">$bar </span><span style="color: #007700">= &amp;</span><span style="color: #0000BB">$foo</span><span style="color: #007700">;             </span><span style="color: #FF8000">// $foo per $bar referenzieren.<br /></span><span style="color: #0000BB">$bar </span><span style="color: #007700">= </span><span style="color: #DD0000">"Ich heiße </span><span style="color: #0000BB">$bar</span><span style="color: #DD0000">"</span><span style="color: #007700">;  </span><span style="color: #FF8000">// $bar verändern...<br /></span><span style="color: #007700">echo </span><span style="color: #0000BB">$bar</span><span style="color: #007700">;<br />echo </span><span style="color: #0000BB">$foo</span><span style="color: #007700">;                 </span><span style="color: #FF8000">// $foo wurde ebenfalls verändert.<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
     </div>

    </div>
   </p>

   <p class="para">
    Zu beachten ist, dass nur Variablen referenziert werden können.
    <div class="informalexample">
     <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$foo </span><span style="color: #007700">= </span><span style="color: #0000BB">25</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$bar </span><span style="color: #007700">= &amp;</span><span style="color: #0000BB">$foo</span><span style="color: #007700">;      </span><span style="color: #FF8000">// Gültige Zuweisung.<br /></span><span style="color: #0000BB">$bar </span><span style="color: #007700">= &amp;(</span><span style="color: #0000BB">24 </span><span style="color: #007700">* </span><span style="color: #0000BB">7</span><span style="color: #007700">);  </span><span style="color: #FF8000">// Ungültig, da ein unbenannter Ausdruck referenziert wird.<br /><br /></span><span style="color: #007700">function </span><span style="color: #0000BB">test</span><span style="color: #007700">()<br />{<br />    return </span><span style="color: #0000BB">25</span><span style="color: #007700">;<br />}<br /><br /></span><span style="color: #0000BB">$bar </span><span style="color: #007700">= &amp;</span><span style="color: #0000BB">test</span><span style="color: #007700">();    </span><span style="color: #FF8000">// Ungültig, da test() keine Variable per Referenz zurückgibt.<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
     </div>

    </div>
   </p>

   <p class="para">
    Es ist in PHP nicht notwendig, Variablen zu deklarieren, aber es wird
    empfohlen. Der Versuch, auf eine undefinierte Variable zuzugreifen, führt
    zu einem Fehler der Stufe <strong><code><a href="errorfunc.constants.php#constant.e-warning">E_WARNING</a></code></strong> (vor PHP 8.0.0,
    <strong><code><a href="errorfunc.constants.php#constant.e-notice">E_NOTICE</a></code></strong>).
    Eine undefinierte Variable hat den Standardwert <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong>.
    Um zu prüfen, ob eine Variable bereits initialisiert wurde, kann das
    Sprachkonstrukt <span class="function"><a href="function.isset.php" class="function">isset()</a></span> verwendet werden.
   </p>
   <p class="para">
    <div class="example" id="example-4">
     <p><strong>Beispiel #4 Vorgabewert einer nicht initialisierten Variable</strong></p>
     <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /></span><span style="color: #FF8000">// Nicht gesetzte UND nicht referenzierte (kein Verwendungskontext) Variable.<br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">$unset_var</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="cdata"><pre>
Warning: Undefined variable $unset_var in ...
NULL
</pre></div>
     </div>
    </div>
   </p>

   <p class="simpara">
    PHP erlaubt die Autovivifikation von Arrays (automatische Erstellung neuer
    Arrays) aus einer undefinierten Variable.
    Das Anhängen eines Elements an eine undefinierte Variable erzeugt ein neues
    Array und führt nicht zu einer Warnung.
   </p>
   <div class="example" id="example-5">
    <p><strong>Beispiel #5 Autovivifikation eines Arrays aus einer undefinierten Variable</strong></p>
    <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$unset_array</span><span style="color: #007700">[] = </span><span style="color: #DD0000">'value'</span><span style="color: #007700">; </span><span style="color: #FF8000">// Erzeugt keine Warnung.<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
    </div>

   </div>

   <div class="warning"><strong class="warning">Warnung</strong>
    <p class="simpara">
     Sich auf den Standardwert einer nicht initialisierten Variablen zu
     verlassen, ist problematisch, wenn eine Datei in eine andere eingebunden
     wird, die denselben Variablennamen verwendet.
    </p>
   </div>

   <p class="simpara">
    Eine Variable kann mit dem Sprachkonstrukt <span class="function"><a href="function.unset.php" class="function">unset()</a></span>
    gelöscht werden.
   </p>

   <p class="simpara">
    Für Informationen zu variablenbezogenen Funktionen siehe
    <a href="ref.var.php" class="link">Referenz zu Variablenfunktionen</a>.
   </p>
  </div><?php manual_footer($setup); ?>