<?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 => 'fr',
  ),
  'this' => 
  array (
    0 => 'language.types.type-juggling.php',
    1 => 'Jonglage de type',
    2 => 'Jonglage de type',
  ),
  'up' => 
  array (
    0 => 'language.types.php',
    1 => 'Les types',
  ),
  'prev' => 
  array (
    0 => 'language.types.declarations.php',
    1 => 'D&eacute;clarations de type',
  ),
  'next' => 
  array (
    0 => 'language.variables.php',
    1 => 'Les variables',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'fr',
    '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">Jonglage de type</h2>

 <p class="simpara">
  PHP ne requiert pas une définition de type explicite dans les déclarations de variables.
  Dans ce cas, le type d&#039;une variable est déterminé en fonction de la valeur qu&#039;elle stocke.
  C&#039;est-à-dire, si une <span class="type"><a href="language.types.string.php" class="type string">string</a></span> est assignée à la variable
  <var class="varname">$var</var>, alors <var class="varname">$var</var> est de type
  <span class="type"><a href="language.types.string.php" class="type string">string</a></span>. Si après une valeur <span class="type"><a href="language.types.integer.php" class="type int">int</a></span> est assignée à
  <var class="varname">$var</var>, elle sera de type <span class="type"><a href="language.types.integer.php" class="type int">int</a></span>.
 </p>

 <p class="para">
  PHP peut tenter de convertir le type d&#039;une valeur en une autre automatiquement
  dans certains contextes. Les différents contextes qui existent sont :
  <ul class="itemizedlist">
   <li class="listitem">
    <span class="simpara">Numérique</span>
   </li>
   <li class="listitem">
    <span class="simpara">String</span>
   </li>
   <li class="listitem">
    <span class="simpara">Logique</span>
   </li>
   <li class="listitem">
    <span class="simpara">Intégral et string</span>
   </li>
   <li class="listitem">
    <span class="simpara">Comparatif</span>
   </li>
   <li class="listitem">
    <span class="simpara">Fonction</span>
   </li>
  </ul>
 </p>

 <blockquote class="note"><p><strong class="note">Note</strong>: 
  <span class="simpara">
   Quand une valeur a besoin d&#039;être interprétée comme un type différent,
   la valeur elle-même <em>ne change pas</em> de type.
  </span>
 </p></blockquote>

 <p class="simpara">
  Pour forcer une variable à être évaluée comme un type particulier, voir la
  section sur le <a href="language.types.type-juggling.php#language.types.typecasting" class="link">casting de type</a>.
  Pour changer le type d&#039;une variable, voir la fonction <span class="function"><a href="function.settype.php" class="function">settype()</a></span>.
 </p>

 <div class="sect2">
  <h3 class="title">Contextes numériques</h3>

  <p class="simpara">
   Ceci est le contexte lors de l&#039;utilisation d&#039;un
   <a href="language.operators.arithmetic.php" class="link">opérateur arithmétique</a>.
  </p>

  <p class="simpara">
   Dans ce contexte si un des opérandes est un <span class="type"><a href="language.types.float.php" class="type float">float</a></span> (ou pas
   interprétable comme <span class="type"><a href="language.types.integer.php" class="type int">int</a></span>), les deux opérandes sont interprétés
   comme des <span class="type"><a href="language.types.float.php" class="type float">float</a></span>s, et le résultat sera un <span class="type"><a href="language.types.float.php" class="type float">float</a></span>.
   Sinon, les opérandes sont interprétés comme des <span class="type"><a href="language.types.integer.php" class="type int">int</a></span>s,
   et le résultat sera aussi un <span class="type"><a href="language.types.integer.php" class="type int">int</a></span>.
   À partir de PHP 8.0.0, si un des opérandes ne peut être interprété, une
   <span class="classname"><a href="class.typeerror.php" class="classname">TypeError</a></span> est lancée.
  </p>
 </div>

 <div class="sect2">
  <h3 class="title">Contextes string</h3>

  <p class="simpara">
   Ceci est le contexte lors de l&#039;utilisation de <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">l&#039;interpolation de chaînes de caractères</a>, ou l&#039;
   <a href="language.operators.string.php" class="link">opérateur de concaténation</a>
   pour les chaînes de caractères.
  </p>

  <p class="simpara">
   Dans ce contexte la valeur sera interprétée comme une <span class="type"><a href="language.types.string.php" class="type string">string</a></span>.
   Si la valeur ne peut pas être interprétée, une
   <span class="classname"><a href="class.typeerror.php" class="classname">TypeError</a></span> est levée.
   Avant PHP 7.4.0, une <strong><code><a href="errorfunc.constants.php#constant.e-recoverable-error">E_RECOVERABLE_ERROR</a></code></strong> était soulevée.
  </p>
 </div>

 <div class="sect2">
  <h3 class="title">Contextes logiques</h3>

  <p class="simpara">
   Ceci est le contexte lors de l&#039;utilisation de déclarations conditionnelles,
   l&#039;<a href="language.operators.comparison.php#language.operators.comparison.ternary" class="link">opérateur ternaire</a>,
   ou un <a href="language.operators.logical.php" class="link">opérateur logique</a>.
  </p>

  <p class="simpara">
   Dans ce contexte la valeur sera interprétée comme un <span class="type"><a href="language.types.boolean.php" class="type bool">bool</a></span>.
  </p>
 </div>

 <div class="sect2">
  <h3 class="title">Contextes intégraux et string</h3>

  <p class="simpara">
   Ceci est le contexte lors de l&#039;utilisation d&#039;un
   <a href="language.operators.bitwise.php" class="link">opérateur bit à bit</a>.
  </p>

  <p class="simpara">
   Dans ce contexte si tous les opérandes sont de type <span class="type"><a href="language.types.string.php" class="type string">string</a></span>
   alors le résultat sera aussi une <span class="type"><a href="language.types.string.php" class="type string">string</a></span>.
   Sinon, les opérandes seront interprétés comme des <span class="type"><a href="language.types.integer.php" class="type int">int</a></span>s,
   et le résultat sera aussi un <span class="type"><a href="language.types.integer.php" class="type int">int</a></span>.
   À partir de PHP 8.0.0, si un des opérandes ne peut être interprété, une
   <span class="classname"><a href="class.typeerror.php" class="classname">TypeError</a></span> est lancée.
  </p>
 </div>

 <div class="sect2">
  <h3 class="title">Contextes comparatifs</h3>

  <p class="simpara">
   Ceci est le contexte lors de l&#039;utilisation d&#039;un
   <a href="language.operators.comparison.php" class="link">opérateur de comparaison</a>.
  </p>

  <p class="simpara">
   Les conversions de types qui se produisent dans ce contexte sont expliquées
   dans le <a href="language.operators.comparison.php#language.operators.comparison.types" class="link">tableau</a>
   Comparaison avec plusieurs types.
  </p>
 </div>

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

  <p class="simpara">
   Ceci est le contexte quand une valeur est passée à un paramètre ou propriété
   typée ou retournée depuis une fonction qui déclare un type de retour.
  </p>

  <p class="para">
   Dans ce contexte, la valeur doit être une valeur du type.
   Il existe deux exceptions, la première est la suivante : si la valeur est de
   type <span class="type"><a href="language.types.integer.php" class="type int">int</a></span> et que le type déclaré est <span class="type"><a href="language.types.float.php" class="type float">float</a></span>, alors
   l&#039;entier est converti en nombre à virgule flottante.
   La seconde est : si le type déclaré est un type <em>scalaire</em>
   
   , la valeur est convertible en un type scalaire, et le mode de typage coercitif
   est actif (par défaut), la valeur peut être convertie en une valeur scalaire acceptée.
   Voir ci-dessous pour une description de ce comportement.
  </p>

  <div class="warning"><strong class="warning">Avertissement</strong>
   <p class="simpara">
    <a href="functions.internal.php" class="link">Les fonctions internes</a>
    contraignent automatiquement <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong> aux types scalaires,
    ce comportement est <em>OBSOLÈTE</em> à partir de PHP 8.1.0.
   </p>
  </div>

  <div class="sect3" id="language.types.type-juggling.function.simple">
   <h4 class="title">Typage coercitif avec déclarations de type simples</h4>
   <ul class="itemizedlist">
    <li class="listitem">
     <span class="simpara">
      Type de déclaration <span class="type"><a href="language.types.boolean.php" class="type bool">bool</a></span> : valeur est interprétée comme <span class="type"><a href="language.types.boolean.php" class="type bool">bool</a></span>.
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      Type de déclaration <span class="type"><a href="language.types.integer.php" class="type int">int</a></span> : valeur est interprétée comme <span class="type"><a href="language.types.integer.php" class="type int">int</a></span>
      si la conversion est bien-définie. Par exemple la chaîne est
      <a href="language.types.numeric-strings.php" class="link">numérique</a>.
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      Type de déclaration <span class="type"><a href="language.types.float.php" class="type float">float</a></span> : valeur est interprétée comme <span class="type"><a href="language.types.float.php" class="type float">float</a></span>
      si la conversion est bien-définie. Par exemple la chaîne est
      <a href="language.types.numeric-strings.php" class="link">numérique</a>.
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      Type de déclaration <span class="type"><a href="language.types.string.php" class="type string">string</a></span> : valeur est interprétée comme <span class="type"><a href="language.types.string.php" class="type string">string</a></span>.
     </span>
    </li>
   </ul>
  </div>

  <div class="sect3" id="language.types.type-juggling.function.union">
   <h4 class="title">Typage coercitif avec unions de type</h4>
   <p class="para">
    Lorsque <code class="literal">strict_types</code> n’est pas activé, les
    déclarations de type scalaire sont soumises à des contraintes de type
    implicites limitées.
    Si le type exact de la valeur ne fait pas partie de l’union, le type cible
    est choisi dans l’ordre de préférence suivant :

    <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>

    Si le type existe dans l&#039;union et que la valeur peut être forcée en ce
    type en utilisant la sémantique de vérification de type existante de PHP, alors le type est choisi.
    Sinon, le type suivant est essayé.
   </p>

   <div class="caution"><strong class="caution">Attention</strong>
    <p class="para">
     À titre d’exception, si la valeur est une chaîne et que <span class="type"><a href="language.types.integer.php" class="type int">int</a></span> et <span class="type"><a href="language.types.float.php" class="type float">float</a></span> font
     tous deux partie de l’union, le type préféré est déterminé par la
     sémantique de <a href="language.types.numeric-strings.php" class="link">chaîne numérique</a>.
     Par exemple, pour <code class="literal">&quot;42&quot;</code> <span class="type"><a href="language.types.integer.php" class="type int">int</a></span> est choisi,
     tandis que pour <code class="literal">&quot;42.0&quot;</code> <span class="type"><a href="language.types.float.php" class="type float">float</a></span> est choisi.
    </p>
   </div>

   <blockquote class="note"><p><strong class="note">Note</strong>: 
    <p class="para">
     Les types qui ne font pas partie de la liste de préférences ci-dessus ne
     sont pas des cibles admissibles à la coercition implicite. En particulier,
     aucune contrainte implicite aux types <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>, et <span class="type"><a href="language.types.singleton.php" class="type true">true</a></span> ne se produit.
    </p>
   </p></blockquote>

   <div class="example" id="example-1">
    <p><strong>Exemple #1 Exemple de types contraints à un type faisant partie de l&#039;union</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">// type exact<br /></span><span style="color: #DD0000">"42"  </span><span style="color: #007700">--&gt; </span><span style="color: #DD0000">"42"        </span><span style="color: #FF8000">// type exact<br /></span><span style="color: #007700">new </span><span style="color: #0000BB">ObjectWithToString </span><span style="color: #007700">--&gt; </span><span style="color: #DD0000">"Résultat de __toString()"<br />                      </span><span style="color: #FF8000">// Objet jamais compatible avec int, utilisation d'une string par défaut<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 compatible avec 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 compatible avec 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 trop grand pour le type int, utilisation d'une string par défaut<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 trop grand pour le type int, utilisation d'une string par défaut<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 compatible avec int<br /></span><span style="color: #007700">[]    --&gt; </span><span style="color: #0000BB">TypeError   </span><span style="color: #FF8000">// tableau non compatible avec int ou 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">// int numérique string<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">// float numérique string<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">// string non numérique, bool par défaut<br /></span><span style="color: #DD0000">""      </span><span style="color: #007700">--&gt; </span><span style="color: #0000BB">false     </span><span style="color: #FF8000">// string non numérique, bool par défaut<br /></span><span style="color: #DD0000">"X"     </span><span style="color: #007700">--&gt; </span><span style="color: #0000BB">true      </span><span style="color: #FF8000">// string non numérique, bool par défaut<br /></span><span style="color: #007700">[]      --&gt; </span><span style="color: #0000BB">TypeError </span><span style="color: #FF8000">// tableau non compatible avec int, float ou 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">Cast de type</h3>

  <p class="simpara">
   Le casting de type convertit la valeur en un type donné en écrivant le type
   entre parenthèses avant la valeur à convertir.
  </p>

  <div class="example" id="example-2">
   <p><strong>Exemple #2 Conversion de type</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 est un entier<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 est un booléen<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">
   Les casts permis sont :
  </p>

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

  <div class="warning"><strong class="warning">Avertissement</strong>
   <p class="para">
    <code class="literal">(integer)</code> est un alias du cast <code class="literal">(int)</code>.
    <code class="literal">(boolean)</code> est un alias du cast <code class="literal">(bool)</code>.
    <code class="literal">(binary)</code> est un alias du cast <code class="literal">(string)</code>.
    <code class="literal">(double)</code> et <code class="literal">(real)</code> sont des alias du
    cast <code class="literal">(float)</code>.
    Ces casts n&#039;utilisent pas le nom de type canonique et sont obsolètes à partir de PHP 8.5.0.
   </p>
  </div>

  <div class="warning"><strong class="warning">Avertissement</strong>
   <p class="simpara">
    L&#039;alias de cast <code class="literal">(real)</code> est obsolète à partir de PHP 7.4.0
    et supprimé à partir de PHP 8.0.0.
   </p>
  </div>

  <div class="warning"><strong class="warning">Avertissement</strong>
   <p class="simpara">
    Le cast <code class="literal">(unset)</code> a été rendu obsolète à partir de PHP 7.2.0.
    À noter que le cast <code class="literal">(unset)</code> est identique à assigner la
    valeur <span class="type"><a href="language.types.null.php" class="type NULL">NULL</a></span> à une variable ou un appel.
    Le cast <code class="literal">(unset)</code> est supprimé à partir de PHP 8.0.0.
   </p>
  </div>

  <div class="caution"><strong class="caution">Attention</strong>
   <p class="simpara">
    Le cast <code class="literal">(binary)</code> et le préfixe <code class="literal">b</code>
    existent uniquement pour la compatibilité ascendante. Actuellement
    <code class="literal">(binary)</code> et <code class="literal">(string)</code> sont identiques,
    mais ceci peut changer et il ne faut pas compter dessus.
   </p>
  </div>

  <blockquote class="note"><p><strong class="note">Note</strong>: 
   <p class="para">
    Les espaces blancs sont ignorés à l&#039;intérieur des parenthèses d&#039;un cast.
    Ainsi, les deux casts suivants sont équivalents :
    <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">
    Cast de <span class="type"><a href="language.types.string.php" class="type string">string</a></span>s littérales et variables en
    <span class="type"><a href="language.types.string.php" class="type string">string</a></span>s binaires :
   </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">
   Au lieu de transtyper une variable en une <span class="type"><a href="language.types.string.php" class="type string">string</a></span>, il est également possible
   d&#039;entourer la variable de guillemets doubles.
  </p>

  <div class="example" id="example-3">
   <p><strong>Exemple #3 Différents mécanismes de conversion</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 est un entier<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 est une chaîne<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 est également une chaîne<br /><br />// Ceci affiche "Ils sont les mêmes"<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">"Ils sont les mêmes"</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">
   Ce qui se produira exactement lors d&#039;un transtypage entre certains types
   n&#039;est pas forcément évident. Pour plus d&#039;informations, voir ces sections :
   <ul class="simplelist">
    <li><a href="language.types.boolean.php#language.types.boolean.casting" class="link">Convertir en boolean</a></li>
    <li><a href="language.types.integer.php#language.types.integer.casting" class="link">Convertir en integer</a></li>
    <li><a href="language.types.float.php#language.types.float.casting" class="link">Convertir en float</a></li>
    <li><a href="language.types.string.php#language.types.string.casting" class="link">Convertir en string</a></li>
    <li><a href="language.types.array.php#language.types.array.casting" class="link">Convertir en array</a></li>
    <li><a href="language.types.object.php#language.types.object.casting" class="link">Convertir en object</a></li>
    <li><a href="language.types.resource.php#language.types.resource.casting" class="link">Convertir en resource</a></li>
    <li><a href="language.types.null.php#language.types.null.casting" class="link">Convertir en NULL</a></li>
    <li><a href="types.comparisons.php" class="link">Les tables de comparaison de type</a></li>
   </ul>
  </p>

  <blockquote class="note"><p><strong class="note">Note</strong>: 
   <span class="simpara">
    Comme PHP prend en charge l&#039;indexation dans les <span class="type"><a href="language.types.string.php" class="type string">string</a></span>s
    via des positions en utilisant la même syntaxe que l&#039;indexation des <span class="type"><a href="language.types.array.php" class="type array">array</a></span>,
    l&#039;exemple suivant est valable pour toutes les versions de PHP :
   </span>

   <div class="example" id="example-4">
    <p><strong>Exemple #4 Utilisation d&#039;un index de tableau avec une chaîne</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 est une chaîne de caractères<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 est toujours une chaîne de caractères<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">
    Voir la section sur l&#039;<a href="language.types.string.php#language.types.string.substr" class="link">accès
    aux chaînes par caractère</a> pour plus d&#039;informations.
   </span>
  </p></blockquote>
 </div>

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