<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/ref.array.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'de',
  ),
  'this' => 
  array (
    0 => 'function.extract.php',
    1 => 'extract',
    2 => 'Importiert Variablen eines Arrays in die aktuelle Symboltabelle',
  ),
  'up' => 
  array (
    0 => 'ref.array.php',
    1 => 'Array Funktionen',
  ),
  'prev' => 
  array (
    0 => 'function.end.php',
    1 => 'end',
  ),
  'next' => 
  array (
    0 => 'function.in-array.php',
    1 => 'in_array',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'de',
    'path' => 'reference/array/functions/extract.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="function.extract" class="refentry">
 <div class="refnamediv">
  <h1 class="refname">extract</h1>
  <p class="verinfo">(PHP 4, PHP 5, PHP 7, PHP 8)</p><p class="refpurpose"><span class="refname">extract</span> &mdash; <span class="dc-title">Importiert Variablen eines Arrays in die aktuelle Symboltabelle</span></p>

 </div>
 <div class="refsect1 description" id="refsect1-function.extract-description">
  <h3 class="title">Beschreibung</h3>
  <div class="methodsynopsis dc-description">
   <span class="methodname"><strong>extract</strong></span>(<span class="methodparam"><span class="type"><a href="language.types.array.php" class="type array">array</a></span> <code class="parameter reference">&$array</code></span>, <span class="methodparam"><span class="type"><a href="language.types.integer.php" class="type int">int</a></span> <code class="parameter">$flags</code><span class="initializer"> = <strong><code><a href="array.constants.php#constant.extr-overwrite">EXTR_OVERWRITE</a></code></strong></span></span>, <span class="methodparam"><span class="type"><a href="language.types.string.php" class="type string">string</a></span> <code class="parameter">$prefix</code><span class="initializer"> = &quot;&quot;</span></span>): <span class="type"><a href="language.types.integer.php" class="type int">int</a></span></div>

  <p class="para rdfs-comment">
   Importiert Variablen eines Arrays in die aktuelle
   <a href="features.gc.refcounting-basics.php" class="link">Symboltabelle</a>.
  </p>
  <p class="para">
   Jeder Schlüssel wird geprüft, ob er einen gültigen Variablennamen ergibt
   und ob es Kollisionen mit existierenden Variablen in der Symboltabelle
   gibt.
  </p>
  <div class="warning"><strong class="warning">Warnung</strong>
   <p class="para">
    Verwenden Sie <span class="function"><strong>extract()</strong></span> nicht für nicht
    vertrauenswürdige Daten wie Benutzereingaben (z. B.
    <var class="varname"><a href="reserved.variables.get.php" class="classname">$_GET</a></var>, <var class="varname"><a href="reserved.variables.files.php" class="classname">$_FILES</a></var>).
   </p>
  </div>
 </div>

 <div class="refsect1 parameters" id="refsect1-function.extract-parameters">
  <h3 class="title">Parameter-Liste</h3>
  <p class="para">
   <dl>
    
     <dt><code class="parameter">array</code></dt>
     <dd>
      <p class="para">
       Ein assoziatives Array. Die Funktion behandelt Schlüssel als
       Variablennamen und Werte als Variablenwerte. Für jedes Paar
       Schlüssel/Wert wird - abhängig von den Parametern
       <code class="parameter">flags</code> und <code class="parameter">prefix</code> - eine
       Variable in der aktuellen Symboltabelle eingetragen.
      </p>
      <p class="para">
       Sie müssen ein assoziatives Array verwenden, da ein numerisch
       indiziertes Array zu keinem Ergebnis führt, außer Sie verwenden
       <strong><code><a href="array.constants.php#constant.extr-prefix-all">EXTR_PREFIX_ALL</a></code></strong> oder
       <strong><code><a href="array.constants.php#constant.extr-prefix-invalid">EXTR_PREFIX_INVALID</a></code></strong>.
      </p>
     </dd>
    
    
     <dt><code class="parameter">flags</code></dt>
     <dd>
      <p class="para">
       Die Art, wie ungültige/numerische Schlüssel und Kollisionen behandelt
       werden, wird durch <code class="parameter">flags</code> bestimmt. Die folgenden
       Werte sind erlaubt:
       <dl>
        
         <dt><strong><code><a href="array.constants.php#constant.extr-overwrite">EXTR_OVERWRITE</a></code></strong></dt>
         <dd>
          <span class="simpara">
           Im Falle einer Kollision wird die existierende Variable
           überschrieben.
          </span>
         </dd>
        
        
         <dt><strong><code><a href="array.constants.php#constant.extr-skip">EXTR_SKIP</a></code></strong></dt>
         <dd>
          <span class="simpara">
           Im Falle einer Kollision wird die existierende Variable nicht
           überschrieben.
          </span>
         </dd>
        
        
         <dt><strong><code><a href="array.constants.php#constant.extr-prefix-same">EXTR_PREFIX_SAME</a></code></strong></dt>
         <dd>
          <span class="simpara">
           Im Falle einer Kollision wird dem Variablennamen
           <code class="parameter">prefix</code> vorangestellt.
          </span>
         </dd>
        
        
         <dt><strong><code><a href="array.constants.php#constant.extr-prefix-all">EXTR_PREFIX_ALL</a></code></strong></dt>
         <dd>
          <span class="simpara">
           Allen Variablennamen wird <code class="parameter">prefix</code>
           vorangestellt.
          </span>
         </dd>
        
        
         <dt><strong><code><a href="array.constants.php#constant.extr-prefix-invalid">EXTR_PREFIX_INVALID</a></code></strong></dt>
         <dd>
          <span class="simpara">
           Nur ungültigen/numerischen Variablennamen wird
           <code class="parameter">prefix</code> vorangestellt.
          </span>
         </dd>
        
        
         <dt><strong><code><a href="array.constants.php#constant.extr-if-exists">EXTR_IF_EXISTS</a></code></strong></dt>
         <dd>
          <span class="simpara">
           Überschreibt die Variable nur, wenn sie bereits in der aktuellen
           Symboltabelle existiert, sonst geschieht nichts. Dies ist dann
           hilfreich, wenn Sie eine Liste mit gültigen Variablen definieren,
           und dann z. B. nur jene Variablen extrahieren, welche Sie aus
           <var class="varname"><a href="reserved.variables.request.php" class="classname">$_REQUEST</a></var> definiert haben.
          </span>
         </dd>
        
        
         <dt><strong><code><a href="array.constants.php#constant.extr-prefix-if-exists">EXTR_PREFIX_IF_EXISTS</a></code></strong></dt>
         <dd>
          <span class="simpara">
           Erstellt nur Variablennamen mit Präfix, wenn die Version ohne
           Präfix der selben Variable in der aktuellen Symboltabelle
           existiert.
          </span>
         </dd>
        
        
         <dt><strong><code><a href="array.constants.php#constant.extr-refs">EXTR_REFS</a></code></strong></dt>
         <dd>
          <span class="simpara">
           Extrahiert Variablen als Referenzen. Das heißt, dass die Werte der
           importierten Variablen immer noch die Werte des Parameters
           <code class="parameter">array</code> referenzieren. Sie können dieses Flag
           alleine oder auch in Kombination mit einem anderen Flag verwenden,
           indem Sie die <code class="parameter">flags</code> mit OR verknüpfen.
          </span>
         </dd>
        
       </dl>
      </p>
      <p class="para">
       Ist <code class="parameter">flags</code> nicht angegeben, so wird
       <strong><code><a href="array.constants.php#constant.extr-overwrite">EXTR_OVERWRITE</a></code></strong> angenommen.
      </p>
     </dd>
    
    
     <dt><code class="parameter">prefix</code></dt>
     <dd>
      <p class="para">
       Beachten Sie, dass <code class="parameter">prefix</code> nur dann nötig ist,
       wenn <code class="parameter">flags</code>
       <strong><code><a href="array.constants.php#constant.extr-prefix-same">EXTR_PREFIX_SAME</a></code></strong>,
       <strong><code><a href="array.constants.php#constant.extr-prefix-all">EXTR_PREFIX_ALL</a></code></strong>,
       <strong><code><a href="array.constants.php#constant.extr-prefix-invalid">EXTR_PREFIX_INVALID</a></code></strong> oder
       <strong><code><a href="array.constants.php#constant.extr-prefix-if-exists">EXTR_PREFIX_IF_EXISTS</a></code></strong> ist. Ist das Resultat trotz
       Präfix kein gültiger Variablenname, wird es nicht in die Symboltabelle
       importiert. Präfixe werden automatisch mit einem Unterstrich vom
       Schlüssel des Arrays getrennt.
      </p>
     </dd>
    
   </dl>
  </p>
 </div>

 <div class="refsect1 returnvalues" id="refsect1-function.extract-returnvalues">
  <h3 class="title">Rückgabewerte</h3>
  <p class="para">
   <span class="function"><strong>extract()</strong></span> gibt die Anzahl der erfolgreich in die
   Symboltabelle importierten Variablen zurück.
  </p>
 </div>

 <div class="refsect1 examples" id="refsect1-function.extract-examples">
  <h3 class="title">Beispiele</h3>
  <p class="para">
   <div class="example" id="example-1">
    <p><strong>Beispiel #1 <span class="function"><strong>extract()</strong></span>-Beispiel</strong></p>
    <div class="example-contents"><p>
     Eine mögliche Verwendung für <span class="function"><strong>extract()</strong></span> ist, Variablen
     in die Symboltabelle zu importieren, die in einem von
     <span class="function"><a href="function.wddx-deserialize.php" class="function">wddx_deserialize()</a></span> zurückgegebenen assoziativen Array
     enthalten sind.
    </p></div>
    <div class="example-contents">
<div class="annotation-interactive phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /><br /></span><span style="color: #FF8000">/* Annahme: $var_array ist ein von wddx_deserialize<br />   zurückgegebenes Array */<br /><br /></span><span style="color: #0000BB">$groesse </span><span style="color: #007700">= </span><span style="color: #DD0000">"groß"</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$var_array </span><span style="color: #007700">= array(<br />    </span><span style="color: #DD0000">"farbe"   </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">"blau"</span><span style="color: #007700">,<br />    </span><span style="color: #DD0000">"groesse" </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">"mittel"</span><span style="color: #007700">,<br />    </span><span style="color: #DD0000">"form"    </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">"Kugel"<br /></span><span style="color: #007700">);<br /><br /></span><span style="color: #0000BB">extract</span><span style="color: #007700">(</span><span style="color: #0000BB">$var_array</span><span style="color: #007700">, </span><span style="color: #0000BB">EXTR_PREFIX_SAME</span><span style="color: #007700">, </span><span style="color: #DD0000">"wddx"</span><span style="color: #007700">);<br /><br />echo </span><span style="color: #DD0000">"</span><span style="color: #0000BB">$farbe</span><span style="color: #DD0000">, </span><span style="color: #0000BB">$groesse</span><span style="color: #DD0000">, </span><span style="color: #0000BB">$form</span><span style="color: #DD0000">, </span><span style="color: #0000BB">$wddx_groesse</span><span style="color: #DD0000">\n"</span><span style="color: #007700">;<br /><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 examplescode"><pre class="examplescode">blau, groß, Kugel, mittel</pre>
</div>
    </div>
    <div class="example-contents"><p>
     <var class="varname">$groesse</var> wurde nicht überschrieben, da wir
     <strong><code><a href="array.constants.php#constant.extr-prefix-same">EXTR_PREFIX_SAME</a></code></strong> angegeben haben. Das führte dazu,
     dass <var class="varname">$wddx_groesse</var> erstellt wurde. Mit der Angabe
     <strong><code><a href="array.constants.php#constant.extr-skip">EXTR_SKIP</a></code></strong> wäre <var class="varname">$wddx_groesse</var>
     nicht erstellt worden. <strong><code><a href="array.constants.php#constant.extr-overwrite">EXTR_OVERWRITE</a></code></strong> hätte
     <var class="varname">$groesse</var> mit dem Wert &quot;mittel&quot; überschrieben, und
     <strong><code><a href="array.constants.php#constant.extr-prefix-all">EXTR_PREFIX_ALL</a></code></strong> hätte die neuen Variablen
     <var class="varname">$wddx_farbe</var>, <var class="varname">$wddx_groesse</var>, und
     <var class="varname">$wddx_form</var> erstellt.
    </p></div>
   </div>
  </p>
 </div>

 <div class="refsect1 notes" id="refsect1-function.extract-notes">
  <h3 class="title">Anmerkungen</h3>
  <div class="warning"><strong class="warning">Warnung</strong>
   <p class="para">
    Verwenden Sie <span class="function"><strong>extract()</strong></span> nicht für nicht
    vertrauenswürdige Daten wie Benutzereingaben (d. h.
    <var class="varname"><a href="reserved.variables.get.php" class="classname">$_GET</a></var>, <var class="varname"><a href="reserved.variables.files.php" class="classname">$_FILES</a></var>, ...). Wenn Sie das
    tun, stellen Sie sicher, dass Sie einen der nicht überschreibenden
    <code class="parameter">flags</code>-Werte wie z. B. <strong><code><a href="array.constants.php#constant.extr-skip">EXTR_SKIP</a></code></strong>
    verwenden und beachten Sie, dass Sie die Daten in der selben Reihenfolge
    extrahieren müssen, die in <a href="ini.core.php#ini.variables-order" class="link">variables_order</a> in der <a href="ini.php" class="link"><var class="filename">php.ini</var></a> angegeben wurde.
   </p>
  </div>
 </div>

 <div class="refsect1 seealso" id="refsect1-function.extract-seealso">
  <h3 class="title">Siehe auch</h3>
  <p class="para">
   <ul class="simplelist">
    <li><span class="function"><a href="function.compact.php" class="function" rel="rdfs-seeAlso">compact()</a> - Erstellt ein Array mit Variablen und deren Werten</span></li>
    <li><span class="function"><a href="function.list.php" class="function" rel="rdfs-seeAlso">list()</a> - Weist Variablen zu, als w&auml;ren sie ein Array</span></li>
   </ul>
  </p>
 </div>


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