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

contributors($setup);

?>
<div id="language.types.type-juggling" class="sect1">
 <h2 class="title">Typumwandlung (Typen-Jonglage)</h2>

 <p class="simpara">
  PHP verlangt in der Variablendeklaration keine explizite Typdefinition. Der
  Typ einer Variablen wird in diesem Fall durch den Wert bestimmt, der in ihr
  gespeichert wird. Das heißt, wenn der Variable <var class="varname">$var</var> der
  Typ <span class="type"><a href="language.types.string.php" class="type string">string</a></span> zugewiesen wird, dann ist <var class="varname">$var</var>
  vom Typ <span class="type"><a href="language.types.string.php" class="type string">string</a></span>. Wenn <var class="varname">$var</var> anschließend ein
  Wert vom Typ <span class="type"><a href="language.types.integer.php" class="type int">int</a></span> zugewiesen wird, ist sie vom Typ
  <span class="type"><a href="language.types.integer.php" class="type int">int</a></span>.
 </p>

 <p class="para">
  PHP kann je nach Kontext versuchen, den Typ eines Wertes automatisch in
  einen anderen umzuwandeln. Folgende Kontexte gibt es:
  <ul class="itemizedlist">
   <li class="listitem">
    <span class="simpara">Numerisch</span>
   </li>
   <li class="listitem">
    <span class="simpara">Zeichenkette</span>
   </li>
   <li class="listitem">
    <span class="simpara">Logisch</span>
   </li>
   <li class="listitem">
    <span class="simpara">Ganzzahlig und Zeichenkette</span>
   </li>
   <li class="listitem">
    <span class="simpara">Vergleichend</span>
   </li>
   <li class="listitem">
    <span class="simpara">Funktion</span>
   </li>
  </ul>
 </p>

 <blockquote class="note"><p><strong class="note">Hinweis</strong>: 
  <span class="simpara">
   Wenn ein Wert als ein anderer Typ interpretiert werden muss, wird der Typ
   des Wertes selbst <em>nicht</em> geändert.
  </span>
 </p></blockquote>

 <p class="simpara">
  Um zu erzwingen, dass eine Variable als ein bestimmter Typ ausgewertet wird,
  siehe den Abschnitt über
  <a href="language.types.type-juggling.php#language.types.typecasting" class="link">Explizite Typumwandlung (Type-Casting)</a>.
  Um den Typ einer Variablen zu ändern, siehe die Funktion
  <span class="function"><a href="function.settype.php" class="function">settype()</a></span>.
 </p>

 <div class="sect2">
  <h3 class="title">Numerischer Kontext</h3>

  <p class="simpara">
   Dieser Kontext liegt vor, wenn ein
   <a href="language.operators.arithmetic.php" class="link">arithmetischer Operator</a>
   verwendet wird.
  </p>

  <p class="simpara">
   Wenn in diesem Kontext einer der beiden Operanden vom Typ <span class="type"><a href="language.types.float.php" class="type float">float</a></span>
   ist (oder nicht als <span class="type"><a href="language.types.integer.php" class="type Int">Int</a></span> interpretiert werden kann), werden
   beide Operanden als <span class="type"><a href="language.types.float.php" class="type Float">Float</a></span>s interpretiert, und das Ergebnis ist
   vom Typ <span class="type"><a href="language.types.float.php" class="type float">float</a></span>. Andernfalls werden die Operanden als
   <span class="type"><a href="language.types.integer.php" class="type Int">Int</a></span>s interpretiert, und das Ergebnis ist ebenfalls vom Typ
   <span class="type"><a href="language.types.integer.php" class="type int">int</a></span>. Wenn einer der Operanden nicht interpretiert werden kann,
   wird seit PHP 8.0.0 ein <span class="classname"><a href="class.typeerror.php" class="classname">TypeError</a></span> geworfen.
  </p>
 </div>

 <div class="sect2">
  <h3 class="title">Zeichenketten-Kontext</h3>

  <p class="simpara">
   Dieser Kontext liegt vor, wenn <span class="function"><a href="function.echo.php" class="function">echo</a></span>,
   <span class="function"><a href="function.print.php" class="function">print</a></span>,
   <a href="language.types.string.php#language.types.string.parsing" class="link">Zeichenketten-Interpolation</a>,
   oder der
   <a href="language.operators.string.php" class="link">Verkettungsoperator</a> für
   Zeichenketten verwendet werden.
  </p>

  <p class="simpara">
   In diesem Kontext wird der Wert als <span class="type"><a href="language.types.string.php" class="type String">String</a></span> interpretiert. Wenn
   der Wert nicht interpretiert werden kann, wird ein
   <span class="classname"><a href="class.typeerror.php" class="classname">TypeError</a></span> geworfen. Vor PHP 7.4.0 wurde ein
   <strong><code><a href="errorfunc.constants.php#constant.e-recoverable-error">E_RECOVERABLE_ERROR</a></code></strong> ausgelöst.
  </p>
 </div>

 <div class="sect2">
  <h3 class="title">Logischer Kontext</h3>

  <p class="simpara">
   Dieser Kontext liegt vor, wenn bedingte Anweisungen, der
   <a href="language.operators.comparison.php#language.operators.comparison.ternary" class="link">ternäre Operator</a>
   oder ein <a href="language.operators.logical.php" class="link">logischer Operator</a>
   verwendet werden.
  </p>

  <p class="simpara">
   In diesem Kontext wird der Wert als <span class="type"><a href="language.types.boolean.php" class="type Bool">Bool</a></span> interpretiert.
  </p>
 </div>

 <div class="sect2">
  <h3 class="title">Kontext für ganzzahlige Werte und Zeichenketten</h3>

  <p class="simpara">
   Dieser Kontext liegt vor, wenn
   <a href="language.operators.bitwise.php" class="link">bitweise Operatoren</a>
   verwendet werden.
  </p>

  <p class="simpara">
   Wenn in diesem Kontext alle Operanden vom Typ <span class="type"><a href="language.types.string.php" class="type string">string</a></span> sind, ist
   auch das Ergebnis vom Typ <span class="type"><a href="language.types.string.php" class="type string">string</a></span>. Andernfalls werden die
   Operanden als <span class="type"><a href="language.types.integer.php" class="type Int">Int</a></span>s interpretiert, und das Ergebnis ist
   ebenfalls vom Typ <span class="type"><a href="language.types.integer.php" class="type int">int</a></span>. Wenn einer der Operanden nicht
   interpretiert werden kann, wird seit PHP 8.0.0 ein
   <span class="classname"><a href="class.typeerror.php" class="classname">TypeError</a></span> geworfen.
  </p>
 </div>

 <div class="sect2">
  <h3 class="title">Vergleichender Kontext</h3>

  <p class="simpara">
   Dieser Kontext liegt vor, wenn ein
   <a href="language.operators.comparison.php" class="link">Vergleichsoperator</a>
   verwendet wird.
  </p>

  <p class="simpara">
   Die in diesem Zusammenhang auftretenden Typumwandlungen werden in der Tabelle
   <a href="language.operators.comparison.php#language.operators.comparison.types" class="link">Vergleich mit verschiedenen Typen</a>
   erläutert.
  </p>
 </div>

 <div class="sect2" id="language.types.type-juggling.function">
  <h3 class="title">Funktionskontext</h3>

  <p class="simpara">
   Dieser Kontext liegt vor, wenn ein Wert an einen typisierten Parameter oder
   eine Eigenschaft übergeben oder von einer Funktion zurückgegeben wird, die
   einen Rückgabetyp deklariert.
  </p>

  <p class="para">
   In diesem Kontext muss der Wert ein Wert dieses Typs sein. Hiervon gibt es
   zwei Ausnahmen. Die Erste: Wenn der Wert vom Typ <span class="type"><a href="language.types.integer.php" class="type int">int</a></span> ist und
   der deklarierte Typ ist <span class="type"><a href="language.types.float.php" class="type float">float</a></span>, dann wird die Ganzzahl in eine
   Gleitkommazahl umgewandelt. Die Zweite: Wenn der deklarierte Typ ein
   <em>skalarer</em> Typ ist,
   
   der Wert in einen skalaren Typ umgewandelt werden kann und der
   Modus der zwangsweisen Typisierung aktiv ist (Standard), kann der Wert in
   einen akzeptierten skalaren Wert umgewandelt werden. Siehe unten für eine
   Beschreibung dieses Verhaltens.
  </p>

  <div class="warning"><strong class="warning">Warnung</strong>
   <p class="simpara">
    <a href="functions.internal.php" class="link">Interne Funktionen</a> wandeln
    <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong> automatisch in skalare Typen um. Dieses Verhalten ist seit
    PHP 8.1.0 <em>DEPRECATED</em> (veraltet).
   </p>
  </div>

  <div class="sect3" id="language.types.type-juggling.function.simple">
   <h4 class="title">Automatische Typisierung mit einfachen Typdeklarationen</h4>
   <ul class="itemizedlist">
    <li class="listitem">
     <span class="simpara">
      Deklaration des Typs <span class="type"><a href="language.types.boolean.php" class="type bool">bool</a></span>: Der Wert wird als
      <span class="type"><a href="language.types.boolean.php" class="type bool">bool</a></span> interpretiert.
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      Deklaration des Typs <span class="type"><a href="language.types.integer.php" class="type int">int</a></span>: Der Wert wird als
      <span class="type"><a href="language.types.integer.php" class="type int">int</a></span> interpretiert, wenn die Umwandlung wohldefiniert ist,
      z. B. wenn die Zeichenkette
      <a href="language.types.numeric-strings.php" class="link">numerisch</a> ist.
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      Deklaration des Typs <span class="type"><a href="language.types.float.php" class="type float">float</a></span>: Der Wert wird als
      <span class="type"><a href="language.types.float.php" class="type float">float</a></span> interpretiert, wenn die Umwandlung wohldefiniert ist,
      z. B. wenn die Zeichenkette
      <a href="language.types.numeric-strings.php" class="link">numerisch</a> ist.
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      Deklaration des Typs <span class="type"><a href="language.types.string.php" class="type string">string</a></span>: Der Wert wird als
      <span class="type"><a href="language.types.string.php" class="type string">string</a></span> interpretiert.
     </span>
    </li>
   </ul>
  </div>

  <div class="sect3" id="language.types.type-juggling.function.union">
   <h4 class="title">Automatische Typisierung mit Union-Typen</h4>
   <p class="para">
    Wenn <code class="literal">strict_types</code> nicht aktiviert ist, unterliegen
    skalare Typdeklarationen einer begrenzten impliziten Typumwandlung. Wenn
    der genaue Typ des Wertes nicht Teil der Union ist, wird der Zieltyp in der
    folgenden Reihenfolge gewählt:

    <ol type="1">
     <li class="listitem">
      <span class="simpara">
       <span class="type"><a href="language.types.integer.php" class="type int">int</a></span>
      </span>
     </li>
     <li class="listitem">
      <span class="simpara">
       <span class="type"><a href="language.types.float.php" class="type float">float</a></span>
      </span>
     </li>
     <li class="listitem">
      <span class="simpara">
       <span class="type"><a href="language.types.string.php" class="type string">string</a></span>
      </span>
     </li>
     <li class="listitem">
      <span class="simpara">
       <span class="type"><a href="language.types.boolean.php" class="type bool">bool</a></span>
      </span>
     </li>
    </ol>

    Wenn der Typ in der Union existiert und der Wert gemäß der PHP-Semantik
    zur Typüberprüfung in diesen Typ umgewandelt werden kann, wird dieser Typ
    ausgewählt. Andernfalls wird der nächste Typ geprüft.
   </p>

   <div class="caution"><strong class="caution">Achtung</strong>
    <p class="para">
     Wenn es sich bei dem Wert um eine Zeichenkette handelt und sowohl int als
     auch float Teil der Union sind, wird der bevorzugte Typ durch die
     bestehende Semantik
     <a href="language.types.numeric-strings.php" class="link">numerischer Zeichenketten</a>
     bestimmt. Zum Beispiel wird für <code class="literal">&quot;42&quot;</code> <span class="type"><a href="language.types.integer.php" class="type int">int</a></span>
     gewählt, während für <code class="literal">&quot;42.0&quot;</code> <span class="type"><a href="language.types.float.php" class="type float">float</a></span>
     gewählt wird.
    </p>
   </div>

   <blockquote class="note"><p><strong class="note">Hinweis</strong>: 
    <p class="para">
     Typen, die nicht in der obigen Präferenzliste aufgeführt sind, kommen als
     Ziele für implizite Umwandlungen nicht in Frage. Insbesondere gibt es
     keine impliziten Umwandlungen in die Typen <span class="type"><a href="language.types.null.php" class="type null">null</a></span>,
     <span class="type"><a href="language.types.singleton.php" class="type false">false</a></span> und <span class="type"><a href="language.types.singleton.php" class="type true">true</a></span>.
    </p>
   </p></blockquote>

   <div class="example" id="example-1">
    <p><strong>Beispiel #1 Beispiel für Typen, die in einen Typ umgewandelt werden, der Teil einer Union ist</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: #FF8000">// int|string<br /></span><span style="color: #0000BB">42    </span><span style="color: #007700">--&gt; </span><span style="color: #0000BB">42          </span><span style="color: #FF8000">// exakter Typ<br /></span><span style="color: #DD0000">"42"  </span><span style="color: #007700">--&gt; </span><span style="color: #DD0000">"42"        </span><span style="color: #FF8000">// exakter Typ<br /></span><span style="color: #007700">new </span><span style="color: #0000BB">ObjectWithToString </span><span style="color: #007700">--&gt; </span><span style="color: #DD0000">"Result of __toString()"<br />                      </span><span style="color: #FF8000">// object nicht kompatibel mit int, greift auf string zurück<br /></span><span style="color: #0000BB">42.0  </span><span style="color: #007700">--&gt; </span><span style="color: #0000BB">42          </span><span style="color: #FF8000">// float kompatibel mit int<br /></span><span style="color: #0000BB">42.1  </span><span style="color: #007700">--&gt; </span><span style="color: #0000BB">42          </span><span style="color: #FF8000">// float kompatibel mit int<br /></span><span style="color: #0000BB">1e100 </span><span style="color: #007700">--&gt; </span><span style="color: #DD0000">"1.0E+100"  </span><span style="color: #FF8000">// float zu groß für Typ int, greift auf string zurück<br /></span><span style="color: #0000BB">INF   </span><span style="color: #007700">--&gt; </span><span style="color: #DD0000">"INF"       </span><span style="color: #FF8000">// float zu groß für Typ int, greift auf string zurück<br /></span><span style="color: #0000BB">true  </span><span style="color: #007700">--&gt; </span><span style="color: #0000BB">1           </span><span style="color: #FF8000">// bool kompatibel mit int<br /></span><span style="color: #007700">[]    --&gt; </span><span style="color: #0000BB">TypeError   </span><span style="color: #FF8000">// array nicht kompatibel mit int oder string<br /><br />// int|float|bool<br /></span><span style="color: #DD0000">"45"    </span><span style="color: #007700">--&gt; </span><span style="color: #0000BB">45        </span><span style="color: #FF8000">// Zeichenkette im numerischen Format für int<br /></span><span style="color: #DD0000">"45.0"  </span><span style="color: #007700">--&gt; </span><span style="color: #0000BB">45.0      </span><span style="color: #FF8000">// Zeichenkette im numerischen Format für float<br /><br /></span><span style="color: #DD0000">"45X"   </span><span style="color: #007700">--&gt; </span><span style="color: #0000BB">true      </span><span style="color: #FF8000">// keine numerische Zeichenkette, greift auf bool zurück<br /></span><span style="color: #DD0000">""      </span><span style="color: #007700">--&gt; </span><span style="color: #0000BB">false     </span><span style="color: #FF8000">// keine numerische Zeichenkette, greift auf bool zurück<br /></span><span style="color: #DD0000">"X"     </span><span style="color: #007700">--&gt; </span><span style="color: #0000BB">true      </span><span style="color: #FF8000">// keine numerische Zeichenkette, greift auf bool zurück<br /></span><span style="color: #007700">[]      --&gt; </span><span style="color: #0000BB">TypeError </span><span style="color: #FF8000">// array nicht kompatibel mit int, float oder bool<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
    </div>

   </div>
  </div>

 </div>

 <div class="sect2" id="language.types.typecasting">
  <h3 class="title">Explizite Typumwandlung (Type-Casting)</h3>

  <p class="simpara">
   Typ-Casting wandelt den Wert in einen bestimmten Typ um, indem der Typ in
   Klammern vor den umzuwandelnden Wert geschrieben wird.
  </p>

  <div class="example" id="example-2">
   <p><strong>Beispiel #2 Typumwandlung</strong></p>
   <div class="example-contents">
<div class="annotation-interactive phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$foo </span><span style="color: #007700">= </span><span style="color: #0000BB">10</span><span style="color: #007700">;          </span><span style="color: #FF8000">// $foo ist ein Integer<br /></span><span style="color: #0000BB">$bar </span><span style="color: #007700">= (bool) </span><span style="color: #0000BB">$foo</span><span style="color: #007700">; </span><span style="color: #FF8000">// $bar ist ein Boolean<br /><br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">$bar</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
   </div>

  </div>

  <p class="simpara">
   Folgende Umwandlungen sind erlaubt:
  </p>

  <ul class="simplelist">
   <li><code class="literal">(int)</code> - Umwandlung in <span class="type"><a href="language.types.integer.php" class="type int">int</a></span></li>
   <li><code class="literal">(bool)</code> - Umwandlung in <span class="type"><a href="language.types.boolean.php" class="type bool">bool</a></span></li>
   <li><code class="literal">(float)</code> - Umwandlung in <span class="type"><a href="language.types.float.php" class="type float">float</a></span></li>
   <li><code class="literal">(string)</code> - Umwandlung in <span class="type"><a href="language.types.string.php" class="type string">string</a></span></li>
   <li><code class="literal">(array)</code> - Umwandlung in <span class="type"><a href="language.types.array.php" class="type array">array</a></span></li>
   <li><code class="literal">(object)</code> - Umwandlung in <span class="type"><a href="language.types.object.php" class="type object">object</a></span></li>
   <li><code class="literal">(unset)</code> - Umwandlung in <span class="type"><a href="language.types.null.php" class="type NULL">NULL</a></span></li>
  </ul>

  <blockquote class="note"><p><strong class="note">Hinweis</strong>: 
   <p class="para">
    <code class="literal">(integer)</code> ist ein Alias des <code class="literal">(int)</code>-Casts.
    <code class="literal">(boolean)</code> ist ein Alias des <code class="literal">(bool)</code>-Casts.
    <code class="literal">(binary)</code> ist ein Alias des <code class="literal">(string)</code>-Casts.
    <code class="literal">(double)</code> und <code class="literal">(real)</code> sind Aliase des
    <code class="literal">(float)</code>-Casts.
    Da diese Casts nicht den kanonischen Typnamen verwenden, werden sie nicht
    empfohlen.
   </p>
  </p></blockquote>

  <div class="warning"><strong class="warning">Warnung</strong>
   <p class="simpara">
    Der Cast-Alias <code class="literal">(real)</code> ist seit PHP 7.4.0 veraltet und
    wurde in PHP 8.0.0 entfernt.
   </p>
  </div>

  <div class="warning"><strong class="warning">Warnung</strong>
   <p class="simpara">
    Der <code class="literal">(unset)</code>-Cast ist seit PHP 7.2.0 veraltet und wurde
    in PHP 8.0.0 entfernt. Es ist zu beachten, dass der
    <code class="literal">(unset)</code>-Cast gleichbedeutend ist mit der Zuweisung des
    Wertes <span class="type"><a href="language.types.null.php" class="type NULL">NULL</a></span> an eine Variable oder einen Aufruf.
   </p>
  </div>

  <div class="caution"><strong class="caution">Achtung</strong>
   <p class="simpara">
    Der <code class="literal">(binary)</code>-Cast und das Präfix <code class="literal">b</code>
    existieren im Hinblick auf zukünftige Versionen. Derzeit sind
    <code class="literal">(binary)</code> und <code class="literal">(string)</code> identisch,
    aber weil sich dies in Zukunft ändern könnte, sollte man sich nicht darauf
    verlassen.
   </p>
  </div>

  <blockquote class="note"><p><strong class="note">Hinweis</strong>: 
   <p class="para">
    Leerzeichen werden innerhalb der Klammern eines Casts ignoriert, weshalb
    die beiden folgenden Ausdrücke gleichwertig sind:
    <div class="informalexample">
     <div class="example-contents">
<div class="annotation-interactive phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$foo </span><span style="color: #007700">= (int) </span><span style="color: #0000BB">$bar</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$foo </span><span style="color: #007700">= ( int ) </span><span style="color: #0000BB">$bar</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
     </div>

    </div>
   </p>
  </p></blockquote>

  <div class="informalexample">
   <p class="simpara">
    Umwandlung literaler <span class="type"><a href="language.types.string.php" class="type String">String</a></span>s und Variablen in binäre
    <span class="type"><a href="language.types.string.php" class="type String">String</a></span>s:
   </p>

   <div class="example-contents">
<div class="annotation-interactive phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$binary </span><span style="color: #007700">= (binary) </span><span style="color: #0000BB">$string</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$binary </span><span style="color: #007700">= </span><span style="color: #DD0000">b"binary string"</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
   </div>

  </div>

  
  <p class="simpara">
   Anstatt eine Variable in einen <span class="type"><a href="language.types.string.php" class="type String">String</a></span> umzuwandeln, kann die
   Variable auch in doppelte Anführungszeichen gesetzt werden.
  </p>

  <div class="example" id="example-3">
   <p><strong>Beispiel #3 Verschiedene Casting-Mechanismen</strong></p>
   <div class="example-contents">
<div class="annotation-interactive phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$foo </span><span style="color: #007700">= </span><span style="color: #0000BB">10</span><span style="color: #007700">;            </span><span style="color: #FF8000">// $foo ist eine ganze Zahl<br /></span><span style="color: #0000BB">$str </span><span style="color: #007700">= </span><span style="color: #DD0000">"</span><span style="color: #0000BB">$foo</span><span style="color: #DD0000">"</span><span style="color: #007700">;        </span><span style="color: #FF8000">// $str ist eine Zeichenkette<br /></span><span style="color: #0000BB">$fst </span><span style="color: #007700">= (string) </span><span style="color: #0000BB">$foo</span><span style="color: #007700">; </span><span style="color: #FF8000">// $fst ist ebenfalls eine Zeichenkette<br /><br />// Dies gibt aus "sie sind identisch"<br /></span><span style="color: #007700">if (</span><span style="color: #0000BB">$fst </span><span style="color: #007700">=== </span><span style="color: #0000BB">$str</span><span style="color: #007700">) {<br />    echo </span><span style="color: #DD0000">"sie sind identisch"</span><span style="color: #007700">, </span><span style="color: #0000BB">PHP_EOL</span><span style="color: #007700">;<br />}<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
   </div>

  </div>

  <p class="para">
   In den folgenden Abschnitten wird beschrieben, was genau passiert, wenn
   zwischen bestimmten Typen umgewandelt wird:
   <ul class="simplelist">
    <li><a href="language.types.boolean.php#language.types.boolean.casting" class="link">Umwandlung in boolean</a></li>
    <li><a href="language.types.integer.php#language.types.integer.casting" class="link">Umwandlung in integer</a></li>
    <li><a href="language.types.float.php#language.types.float.casting" class="link">Umwandlung in float</a></li>
    <li><a href="language.types.string.php#language.types.string.casting" class="link">Umwandlung in string</a></li>
    <li><a href="language.types.array.php#language.types.array.casting" class="link">Umwandlung in array</a></li>
    <li><a href="language.types.object.php#language.types.object.casting" class="link">Umwandlung in ein Objekt</a></li>
    <li><a href="language.types.resource.php#language.types.resource.casting" class="link">Umwandlung in eine Ressource</a></li>
    <li><a href="language.types.null.php#language.types.null.casting" class="link">Umwandlung in NULL</a></li>
    <li>Die <a href="types.comparisons.php" class="link">Tabellen zu Typenvergleichen</a></li>
   </ul>
  </p>

  <blockquote class="note"><p><strong class="note">Hinweis</strong>: 
   <span class="simpara">
    Da <span class="type"><a href="language.types.string.php" class="type String">String</a></span>s in PHP mit derselben Syntax wie
    <span class="type"><a href="language.types.array.php" class="type Array">Array</a></span>s über Offsets indiziert werden können, gilt das
    folgende Beispiel für alle PHP-Versionen:
   </span>

   <div class="example" id="example-4">
    <p><strong>Beispiel #4 Verwenden des Array-Offsets bei einer Zeichenkette</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: #DD0000">'car'</span><span style="color: #007700">; </span><span style="color: #FF8000">// $a ist eine Zeichenkette<br /></span><span style="color: #0000BB">$a</span><span style="color: #007700">[</span><span style="color: #0000BB">0</span><span style="color: #007700">] = </span><span style="color: #DD0000">'b'</span><span style="color: #007700">;   </span><span style="color: #FF8000">// $a ist immer noch eine Zeichenkette<br /></span><span style="color: #007700">echo </span><span style="color: #0000BB">$a</span><span style="color: #007700">;       </span><span style="color: #FF8000">// bar<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
    </div>

   </div>

   <span class="simpara">
    Weitere Informationen sind im Abschnitt
    <a href="language.types.string.php#language.types.string.substr" class="link">Zugriff auf Zeichen in einem String</a>
    zu finden.
   </span>
  </p></blockquote>
 </div>

</div><?php manual_footer($setup); ?>