<?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 => 'fr',
  ),
  'this' => 
  array (
    0 => 'function.extract.php',
    1 => 'extract',
    2 => 'Importe les variables dans la table des symboles',
  ),
  'up' => 
  array (
    0 => 'ref.array.php',
    1 => 'Fonctions sur les tableaux',
  ),
  'prev' => 
  array (
    0 => 'function.end.php',
    1 => 'end',
  ),
  'next' => 
  array (
    0 => 'function.in-array.php',
    1 => 'in_array',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'fr',
    '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">Importe les variables dans la table des symboles</span></p>

 </div>
 <div class="refsect1 description" id="refsect1-function.extract-description">
  <h3 class="title">Description</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">
   Importe les variables dans la
   <a href="features.gc.refcounting-basics.php" class="link">table des symboles</a>.
  </p>
  <p class="para">
   <span class="function"><strong>extract()</strong></span> vérifie chaque clé afin de contrôler si elle a un nom
   de variable valide. Elle vérifie également les collisions avec des variables
   existantes dans la table des symboles.
  </p>
  <div class="warning"><strong class="warning">Avertissement</strong>
   <p class="para">
    N&#039;utiliser pas <span class="function"><strong>extract()</strong></span> sur des données non sûres comme les entrées utilisateur
    (ex. <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">Liste de paramètres</h3>
  <p class="para">
   <dl>
    
     <dt><code class="parameter">array</code></dt>
     <dd>
      <p class="para">
       Un tableau associatif. Cette fonction crée les variables dont les
       noms sont les index de ce tableau, et leur affecte la valeur associée.
       Pour chaque paire clé/valeur, <span class="function"><strong>extract()</strong></span> crée
       une variable, avec les paramètres <code class="parameter">flags</code>
       et <code class="parameter">prefix</code>.
      </p>
      <p class="para">
       Il faut utiliser un tableau associatif. Un tableau indexé numériquement
       ne produira aucun résultat, à moins que l&#039;on n&#039;utilise l&#039;option
       <strong><code><a href="array.constants.php#constant.extr-prefix-all">EXTR_PREFIX_ALL</a></code></strong> ou <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">
       Le traitement des collisions est
       déterminé par <code class="parameter">flags</code>.
       Ce paramètre peut prendre une des valeurs suivantes :
       <dl>
        
         <dt><strong><code><a href="array.constants.php#constant.extr-overwrite">EXTR_OVERWRITE</a></code></strong></dt>
         <dd>
          <span class="simpara">
           Lors d&#039;une collision, réécrire la variable existante.
          </span>
         </dd>
        
        
         <dt><strong><code><a href="array.constants.php#constant.extr-skip">EXTR_SKIP</a></code></strong></dt>
         <dd>
          <span class="simpara">
           Lors d&#039;une collision, ne pas réécrire la variable existante.
          </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">
           Lors d&#039;une collision, ajouter le préfixe <code class="parameter">prefix</code>,
           et créer une nouvelle variable.
          </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">
           Ajouter le préfixe <code class="parameter">prefix</code> pour toutes les variables.
          </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">
           Préfixer uniquement les variables aux noms invalides ou numériques
           avec le préfixe <code class="parameter">prefix</code>.
          </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">
           Écrase la variable uniquement si elle existe déjà dans la
           table des symboles, et, sinon, ne rien faire. Ceci est
           pratique pour définir une liste de variables valides, puis
           extraire du tableau les valeurs qu&#039;on a déjà définies
           grâce à <var class="varname"><a href="reserved.variables.request.php" class="classname">$_REQUEST</a></var>, par exemple.
          </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">
           Ne crée que des variables préfixées, si la version non préfixée
           de la même variable existe dans la table des symboles courante.
          </span>
         </dd>
        
        
         <dt><strong><code><a href="array.constants.php#constant.extr-refs">EXTR_REFS</a></code></strong></dt>
         <dd>
          <span class="simpara">
           Extrait les variables sous forme de références. Cela signifie que
           les valeurs des variables importées font toujours référence aux
           valeurs des variables d&#039;origine dans le paramètre
           <code class="parameter">array</code>. Il est possible d&#039;utiliser cette
           option seule, ou bien la combiner avec d&#039;autres options avec
           l&#039;opérateur OR, dans le paramètre <code class="parameter">flags</code>.
          </span>
         </dd>
        
       </dl>
      </p>
      <p class="para">
       Si <code class="parameter">flags</code> est omis, <span class="function"><strong>extract()</strong></span>
       utilisera <strong><code><a href="array.constants.php#constant.extr-overwrite">EXTR_OVERWRITE</a></code></strong> par défaut.
      </p>
     </dd>
    
    
     <dt><code class="parameter">prefix</code></dt>
     <dd>
      <p class="para">
       Il est à noter que <code class="parameter">prefix</code> n&#039;est nécessaire que pour
       les valeurs de <code class="parameter">flags</code> suivantes :
       <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> ou <strong><code><a href="array.constants.php#constant.extr-prefix-if-exists">EXTR_PREFIX_IF_EXISTS</a></code></strong>.
       Si le résultat préfixé n&#039;est pas un nom de variable valide,
       il ne sera pas importé dans la table des symboles. Les préfixes sont
       automatiquement séparés de l&#039;index du tableau par un caractère de
       soulignement.
      </p>
     </dd>
    
   </dl>
  </p>
 </div>

 <div class="refsect1 returnvalues" id="refsect1-function.extract-returnvalues">
  <h3 class="title">Valeurs de retour</h3>
  <p class="para">
   Retourne le nombre de variables importées avec succès dans la table
   des symboles.
  </p>
 </div>

 
 <div class="refsect1 examples" id="refsect1-function.extract-examples">
  <h3 class="title">Exemples</h3>
  <p class="para">
   <div class="example" id="example-1">
    <p><strong>Exemple #1 Exemple avec <span class="function"><strong>extract()</strong></span></strong></p>
    <div class="example-contents">
<div class="annotation-interactive phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$size </span><span style="color: #007700">= </span><span style="color: #DD0000">"large"</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">"color" </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">"blue"</span><span style="color: #007700">,<br />    </span><span style="color: #DD0000">"size"  </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">"medium"</span><span style="color: #007700">,<br />    </span><span style="color: #DD0000">"shape" </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">"sphere"<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">$color</span><span style="color: #DD0000">, </span><span style="color: #0000BB">$size</span><span style="color: #DD0000">, </span><span style="color: #0000BB">$shape</span><span style="color: #DD0000">, </span><span style="color: #0000BB">$wddx_size</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>L&#039;exemple ci-dessus va afficher :</p></div>
    <div class="example-contents screen">
<div class="annotation-interactive examplescode"><pre class="examplescode">blue, large, sphere, medium</pre>
</div>
    </div>
    <div class="example-contents"><p>
     La variable <var class="varname">$size</var> n&#039;a pas été réécrite, car on
     avait spécifié le paramètre <strong><code><a href="array.constants.php#constant.extr-prefix-same">EXTR_PREFIX_SAME</a></code></strong>,
     qui a permis la création de <var class="varname">$wddx_size</var>. Si
     <strong><code><a href="array.constants.php#constant.extr-skip">EXTR_SKIP</a></code></strong> avait été utilisée, alors
     <var class="varname">$wddx_size</var> n&#039;aurait pas été créé.
     Avec <strong><code><a href="array.constants.php#constant.extr-overwrite">EXTR_OVERWRITE</a></code></strong>, <var class="varname">$size</var>
     aurait pris la valeur &quot;medium&quot;, et avec <strong><code><a href="array.constants.php#constant.extr-prefix-all">EXTR_PREFIX_ALL</a></code></strong>,
     les variables créées seraient <var class="varname">$wddx_color</var>,
     <var class="varname">$wddx_size</var> et <var class="varname">$wddx_shape</var>.
    </p></div>
   </div>
  </p>
 </div>

 <div class="refsect1 notes" id="refsect1-function.extract-notes">
  <h3 class="title">Notes</h3>
  <div class="warning"><strong class="warning">Avertissement</strong>
   <p class="para">
    N&#039;utiliser pas <span class="function"><strong>extract()</strong></span> sur des données inconnues, comme
    les données utilisateurs (c.-à-d. <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>, etc.).
    Si on le fait, il faut s&#039;assurer d&#039;utiliser l&#039;une des constantes
    <code class="parameter">flags</code> qui n&#039;écrasent pas les valeurs, comme
    <strong><code><a href="array.constants.php#constant.extr-skip">EXTR_SKIP</a></code></strong>. Il est aussi à noter qu&#039;il faut maintenant
    extraire dans le même ordre que celui défini dans <a href="ini.core.php#ini.variables-order" class="link">variables_order</a> du <a href="ini.php" class="link"><var class="filename">php.ini</var></a>.
   </p>
  </div>
 </div>

 <div class="refsect1 seealso" id="refsect1-function.extract-seealso">
  <h3 class="title">Voir aussi</h3>
  <p class="para">
   <ul class="simplelist">
    <li><span class="function"><a href="function.compact.php" class="function" rel="rdfs-seeAlso">compact()</a> - Cr&eacute;e un tableau &agrave; partir de variables et de leur valeur</span></li>
    <li><span class="function"><a href="function.list.php" class="function" rel="rdfs-seeAlso">list()</a> - Assigne des variables comme si elles &eacute;taient un tableau</span></li>
   </ul>
  </p>
 </div>

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