<?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.array.php',
    1 => 'Les tableaux',
    2 => 'Les tableaux',
  ),
  'up' => 
  array (
    0 => 'language.types.php',
    1 => 'Les types',
  ),
  'prev' => 
  array (
    0 => 'language.types.numeric-strings.php',
    1 => 'Cha&icirc;nes num&eacute;riques',
  ),
  'next' => 
  array (
    0 => 'language.types.object.php',
    1 => 'Les objets',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'fr',
    'path' => 'language/types/array.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="language.types.array" class="sect1">
 <h2 class="title">Les tableaux</h2>

 <p class="para">
  Pour une liste de toutes les fonctions de tableau, voir le chapitre <a href="ref.array.php" class="link">fonctions de tableau</a> dans la documentation.
 </p>

 <p class="para">
  Un tableau en PHP est en fait une carte ordonnée. Une carte est un type
  qui associe des <em>valeurs</em> à des <em>clés</em>.
  Ce type est optimisé pour différentes utilisations ; il peut être considéré
  comme un tableau, une liste, une table de hachage, un dictionnaire, une
  collection, une pile, une file d&#039;attente et probablement plus. On peut avoir,
  comme valeur d&#039;un tableau, d&#039;autres tableaux, multidimensionnels ou non.
 </p>

 <p class="para">
  La structure de ces données dépasse l&#039;objet de ce manuel, mais au moins
  un exemple est fourni pour chacun des cas évoqués. Pour plus d&#039;informations,
  se reporter aux différentes explications sur le sujet que l&#039;on trouve
  sur le web.
 </p>

 <div class="sect2" id="language.types.array.syntax">
  <h3 class="title">Syntaxe</h3>

  <div class="sect3" id="language.types.array.syntax.array-func">
   <h4 class="title">Syntaxe d&#039;un tableau</h4>

   <p class="para">
    Un tableau peut être créé en utilisant la structure de langage
    <span class="function"><a href="function.array.php" class="function">array()</a></span>. Il prend un nombre illimité de paramètres,
    chacun séparé par une virgule, sous la forme d&#039;une paire
    <code class="literal"><span class="replaceable">key</span> =&gt;
    <span class="replaceable">value</span></code>.
   </p>

   <pre class="synopsis">
array(
    <span class="optional"><span class="replaceable">key</span>  =&gt; </span><span class="replaceable">value</span>,
    <span class="optional"><span class="replaceable">key2</span> =&gt; </span><span class="replaceable">value2</span>,
    <span class="optional"><span class="replaceable">key3</span> =&gt; </span><span class="replaceable">value3</span>,
    ...
)</pre>
   

   <p class="para">
    La virgule après le dernier élément d&#039;un tableau
    est optionnelle et peut ne pas être ajoutée. C&#039;est généralement ce qui
    est fait pour les tableaux sur une seule ligne, c.-à-d.
    <code class="literal">array(1, 2)</code> est préféré à <code class="literal">array(1, 2, )</code>.
    Pour les tableaux sur plusieurs lignes, la virgule finale est généralement
    utilisée, car elle permet d&#039;ajouter plus facilement de nouveaux éléments à
    la fin.
   </p>

   <blockquote class="note"><p><strong class="note">Note</strong>: 
    <p class="para">
     Une syntaxe de tableau courte existe qui remplace
     <code class="literal">array()</code> par <code class="literal">[]</code>.
    </p>
   </p></blockquote>

   <div class="example" id="example-1">
    <p><strong>Exemple #1 Un tableau simple</strong></p>
    <div class="example-contents">
<div class="annotation-interactive phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$array1 </span><span style="color: #007700">= array(<br />    </span><span style="color: #DD0000">"foo" </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">"bar"</span><span style="color: #007700">,<br />    </span><span style="color: #DD0000">"bar" </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">"foo"</span><span style="color: #007700">,<br />);<br /><br /></span><span style="color: #FF8000">// Utilisant la syntaxe de tableau courte<br /></span><span style="color: #0000BB">$array2 </span><span style="color: #007700">= [<br />    </span><span style="color: #DD0000">"foo" </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">"bar"</span><span style="color: #007700">,<br />    </span><span style="color: #DD0000">"bar" </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">"foo"</span><span style="color: #007700">,<br />];<br /><br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">$array1</span><span style="color: #007700">, </span><span style="color: #0000BB">$array2</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
    </div>

   </div>

   <p class="para">
    La clé <span class="replaceable">key</span> peut être soit un <span class="type"><a href="language.types.integer.php" class="type int">int</a></span>,
    soit une <a href="language.types.string.php" class="link">chaîne de caractères</a>. La valeur <span class="replaceable">value</span> peut être
    de n&#039;importe quel type.
   </p>

   <p class="para" id="language.types.array.key-casts">
    De plus, les modifications de type suivantes surviendront pour la clé <span class="replaceable">key</span> :
    <ul class="itemizedlist">
     <li class="listitem">
      <span class="simpara">
       Les chaînes de caractères contenant un entier valide, sauf si le nombre 
       est précédé d&#039;un signe <code class="literal">+</code> seront modifiées en un type
       entier. C.-à-d. la clé <code class="literal">&quot;8&quot;</code> sera effectivement stockée comme
       l&#039;entier <code class="literal">8</code>. D&#039;un autre côté, <code class="literal">&quot;08&quot;</code> ne sera
       pas modifié, sachant que ce n&#039;est pas un entier décimal valide.
      </span>
     </li>
     <li class="listitem">
      <span class="simpara">
       Les nombres à virgule flottante seront aussi modifiés en entier, ce qui signifie
       que la partie après la virgule sera tronquée. C.-à-d. la clé <code class="literal">8.7</code>
       sera stockée sous l&#039;entier <code class="literal">8</code>.
      </span>
     </li>
     <li class="listitem">
      <span class="simpara">
       Les booléens seront modifiés en entier également, c.-à-d. la clé
       <strong><code><a href="reserved.constants.php#constant.true">true</a></code></strong> sera stockée sous l&#039;entier <code class="literal">1</code>
       et la clé <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong> sous l&#039;entier <code class="literal">0</code>.
      </span>
     </li>
     <li class="listitem">
      <span class="simpara">
       La valeur <span class="type"><a href="language.types.null.php" class="type Null">Null</a></span> sera modifiée en une chaîne vide, c.-à-d. la clé
       <code class="literal">null</code> sera stockée sous la chaîne de caractères <code class="literal">&quot;&quot;</code>.
      </span>
     </li>
     <li class="listitem">
      <span class="simpara">
       Les tableaux et les objets <em>ne peuvent pas</em> être utilisés comme clé.
       Toute tentative en ce sens émettra l&#039;alerte suivante : <code class="literal">Illegal offset type</code>.
      </span>
     </li>
    </ul>
   </p>
   
   <p class="para">
    Si plusieurs éléments dans la déclaration d&#039;un tableau utilisent la même clé,
    seule la dernière sera utilisée, écrasant ainsi toutes les précédentes.
   </p>
   
   <div class="example" id="example-2">
    <p><strong>Exemple #2 Exemple sur la modification de type et l&#039;écrasement</strong></p>
    <div class="example-contents">
<div class="annotation-interactive phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$array </span><span style="color: #007700">= array(<br />    </span><span style="color: #0000BB">1    </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">"a"</span><span style="color: #007700">,<br />    </span><span style="color: #DD0000">"1"  </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">"b"</span><span style="color: #007700">,<br />    </span><span style="color: #0000BB">1.5  </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">"c"</span><span style="color: #007700">,<br />    </span><span style="color: #0000BB">true </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">"d"</span><span style="color: #007700">,<br />);<br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">$array</span><span style="color: #007700">);<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 cdata"><pre>
array(1) {
  [1]=&gt;
  string(1) &quot;d&quot;
}
</pre></div>
    </div>
    <div class="example-contents"><p>
     Vu que toutes les clés de l&#039;exemple ci-dessus sont modifiées en l&#039;entier
     <code class="literal">1</code>, la valeur sera écrasée sur chaque nouvel élément,
     et seul le dernier dont la valeur assignée est <code class="literal">&quot;d&quot;</code> sera
     conservé.
    </p></div>
   </div>
   
   <p class="para">
    Les tableaux PHP peuvent contenir des clés de type 
    <span class="type"><a href="language.types.integer.php" class="type int">int</a></span> et <span class="type"><a href="language.types.string.php" class="type string">string</a></span> en même temps,
    vu que PHP ne distingue pas les tableaux indexés et les tableaux associatifs.
   </p>

   <div class="example" id="example-3">
    <p><strong>Exemple #3 Exemple avec des clés de type <span class="type"><a href="language.types.integer.php" class="type int">int</a></span> et <span class="type"><a href="language.types.string.php" class="type string">string</a></span></strong></p>
    <div class="example-contents">
<div class="annotation-interactive phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$array </span><span style="color: #007700">= array(<br />    </span><span style="color: #DD0000">"foo" </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">"bar"</span><span style="color: #007700">,<br />    </span><span style="color: #DD0000">"bar" </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">"foo"</span><span style="color: #007700">,<br />    </span><span style="color: #0000BB">100   </span><span style="color: #007700">=&gt; -</span><span style="color: #0000BB">100</span><span style="color: #007700">,<br />    -</span><span style="color: #0000BB">100  </span><span style="color: #007700">=&gt; </span><span style="color: #0000BB">100</span><span style="color: #007700">,<br />);<br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">$array</span><span style="color: #007700">);<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 cdata"><pre>
array(4) {
  [&quot;foo&quot;]=&gt;
  string(3) &quot;bar&quot;
  [&quot;bar&quot;]=&gt;
  string(3) &quot;foo&quot;
  [100]=&gt;
  int(-100)
  [-100]=&gt;
  int(100)
}
</pre></div>
    </div>
   </div>
   
   <p class="para">
    La clé <span class="replaceable">key</span> est optionnelle. Si elle n&#039;est
    pas spécifiée, PHP utilisera un incrément de la dernière clé entière utilisée.
   </p>
   
   <div class="example" id="example-4">
    <p><strong>Exemple #4 Tableaux indexés sans clé</strong></p>
    <div class="example-contents">
<div class="annotation-interactive phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$array </span><span style="color: #007700">= array(</span><span style="color: #DD0000">"foo"</span><span style="color: #007700">, </span><span style="color: #DD0000">"bar"</span><span style="color: #007700">, </span><span style="color: #DD0000">"hello"</span><span style="color: #007700">, </span><span style="color: #DD0000">"world"</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">$array</span><span style="color: #007700">);<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 cdata"><pre>
array(4) {
  [0]=&gt;
  string(3) &quot;foo&quot;
  [1]=&gt;
  string(3) &quot;bar&quot;
  [2]=&gt;
  string(5) &quot;hello&quot;
  [3]=&gt;
  string(5) &quot;world&quot;
}
</pre></div>
    </div>
   </div>
   
   <p class="para">
    Il est possible de spécifier la clé seulement pour quelques éléments
    et ne pas la fournir pour d&#039;autres :
   </p>
   
   <div class="example" id="example-5">
    <p><strong>Exemple #5 Exemple avec des clés seulement pour quelques éléments</strong></p>
    <div class="example-contents">
<div class="annotation-interactive phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$array </span><span style="color: #007700">= array(<br />         </span><span style="color: #DD0000">"a"</span><span style="color: #007700">,<br />         </span><span style="color: #DD0000">"b"</span><span style="color: #007700">,<br />    </span><span style="color: #0000BB">6 </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">"c"</span><span style="color: #007700">,<br />         </span><span style="color: #DD0000">"d"</span><span style="color: #007700">,<br />);<br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">$array</span><span style="color: #007700">);<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 cdata"><pre>
array(4) {
  [0]=&gt;
  string(1) &quot;a&quot;
  [1]=&gt;
  string(1) &quot;b&quot;
  [6]=&gt;
  string(1) &quot;c&quot;
  [7]=&gt;
  string(1) &quot;d&quot;
}
</pre></div>
    </div>
    <div class="example-contents"><p>
     Comme on peut le voir, la dernière valeur <code class="literal">&quot;d&quot;</code>
     a été assignée à la clé <code class="literal">7</code>. Ceci est dû au fait que
     la dernière clé entière la plus grande utilisée auparavant était <code class="literal">6</code>.
    </p></div>
   </div>

   <div class="example" id="example-6">
    <p><strong>Exemple #6 Exemple complexe sur la modification de type et l&#039;écrasement</strong></p>
    <div class="example-contents"><p>
     Cet exemple inclut toutes les variations de modification de type de clés
     et écrasements des éléments.
    </p></div>
    <div class="example-contents">
<div class="annotation-interactive phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$array </span><span style="color: #007700">= array(<br />    </span><span style="color: #0000BB">1    </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">'a'</span><span style="color: #007700">,<br />    </span><span style="color: #DD0000">'1'  </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">'b'</span><span style="color: #007700">, </span><span style="color: #FF8000">// la valeur "a" sera écrasée par "b"<br />    </span><span style="color: #0000BB">1.5  </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">'c'</span><span style="color: #007700">, </span><span style="color: #FF8000">// la valeur "b" sera écrasée par "c"<br />    </span><span style="color: #007700">-</span><span style="color: #0000BB">1 </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">'d'</span><span style="color: #007700">,<br />    </span><span style="color: #DD0000">'01'  </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">'e'</span><span style="color: #007700">, </span><span style="color: #FF8000">// comme ceci n'est pas un entier sous forme de chaîne, cela n'écrasera PAS la clé pour 1<br />    </span><span style="color: #DD0000">'1.5' </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">'f'</span><span style="color: #007700">, </span><span style="color: #FF8000">// comme ceci n'est pas un entier sous forme de chaîne, cela n'écrasera pas la clé pour 1<br />    </span><span style="color: #0000BB">true </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">'g'</span><span style="color: #007700">, </span><span style="color: #FF8000">// la valeur "c" sera écrasée par "g"<br />    </span><span style="color: #0000BB">false </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">'h'</span><span style="color: #007700">,<br />    </span><span style="color: #DD0000">'' </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">'i'</span><span style="color: #007700">,<br />    </span><span style="color: #0000BB">null </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">'j'</span><span style="color: #007700">, </span><span style="color: #FF8000">// la valeur "i" sera écrasée par "j"<br />    </span><span style="color: #DD0000">'k'</span><span style="color: #007700">, </span><span style="color: #FF8000">// la valeur "k" est assignée à la clé 2. Ceci est dû au fait que la dernière clé entière la plus grande utilisée auparavant était 1<br />    </span><span style="color: #0000BB">2 </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">'l'</span><span style="color: #007700">, </span><span style="color: #FF8000">// la valeur "k" sera écrasée par "l"<br /></span><span style="color: #007700">);<br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">$array</span><span style="color: #007700">);<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 cdata"><pre>
array(7) {
  [1]=&gt;
  string(1) &quot;g&quot;
  [-1]=&gt;
  string(1) &quot;d&quot;
  [&quot;01&quot;]=&gt;
  string(1) &quot;e&quot;
  [&quot;1.5&quot;]=&gt;
  string(1) &quot;f&quot;
  [0]=&gt;
  string(1) &quot;h&quot;
  [&quot;&quot;]=&gt;
  string(1) &quot;j&quot;
  [2]=&gt;
  string(1) &quot;l&quot;
}
</pre></div>
    </div>
   </div>
   <div class="example" id="example-7">
    <p><strong>Exemple #7 Exemple d&#039;index négatif</strong></p>
    <div class="example-contents"><p>
     Lorsqu&#039;une clé entière négative <code class="literal">n</code> est assignée, PHP prendra soin
     d&#039;assigner la clé suivante à <code class="literal">n+1</code>.
    </p></div>
    <div class="example-contents">
<div class="annotation-interactive phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$array </span><span style="color: #007700">= [];<br /><br /></span><span style="color: #0000BB">$array</span><span style="color: #007700">[-</span><span style="color: #0000BB">5</span><span style="color: #007700">] = </span><span style="color: #0000BB">1</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$array</span><span style="color: #007700">[] = </span><span style="color: #0000BB">2</span><span style="color: #007700">;<br /><br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">$array</span><span style="color: #007700">);<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 cdata"><pre>
array(2) {
  [-5]=&gt;
  int(1)
  [-4]=&gt;
  int(2)
}
</pre></div>
    </div>

    <div class="warning"><strong class="warning">Avertissement</strong>
     <p class="simpara">
      Avant PHP 8.3.0, l&#039;assignation d&#039;une clé entière négative <code class="literal">n</code>
      assignait la clé suivante à <code class="literal">0</code>. L&#039;exemple précédent aurait
      donc produit :
     </p>
     <div class="informalexample">
      <div class="example-contents screen">
<div class="annotation-interactive cdata"><pre>
array(2) {
  [-5]=&gt;
  int(1)
  [0]=&gt;
  int(2)
}
</pre></div>
      </div>
     </div>
    </div>
   </div>
  </div>
  
  <div class="sect3" id="language.types.array.syntax.accessing">
   <h4 class="title">Accès aux éléments d&#039;un tableau en utilisant la syntaxe à base
    de crochets</h4>
   
   <p class="para">
    Les éléments d&#039;un tableau peuvent être accédés en utilisant
    la syntaxe <code class="literal">array[key]</code>.
   </p>
   
   <div class="example" id="example-8">
    <p><strong>Exemple #8 Accès aux éléments d&#039;un tableau</strong></p>
    <div class="example-contents">
<div class="annotation-interactive phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$array </span><span style="color: #007700">= array(<br />    </span><span style="color: #DD0000">"foo" </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">"bar"</span><span style="color: #007700">,<br />    </span><span style="color: #0000BB">42    </span><span style="color: #007700">=&gt; </span><span style="color: #0000BB">24</span><span style="color: #007700">,<br />    </span><span style="color: #DD0000">"multi" </span><span style="color: #007700">=&gt; array(<br />         </span><span style="color: #DD0000">"dimensional" </span><span style="color: #007700">=&gt; array(<br />             </span><span style="color: #DD0000">"array" </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">"foo"<br />         </span><span style="color: #007700">)<br />    )<br />);<br /><br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">$array</span><span style="color: #007700">[</span><span style="color: #DD0000">"foo"</span><span style="color: #007700">]);<br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">$array</span><span style="color: #007700">[</span><span style="color: #0000BB">42</span><span style="color: #007700">]);<br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">$array</span><span style="color: #007700">[</span><span style="color: #DD0000">"multi"</span><span style="color: #007700">][</span><span style="color: #DD0000">"dimensional"</span><span style="color: #007700">][</span><span style="color: #DD0000">"array"</span><span style="color: #007700">]);<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 cdata"><pre>
string(3) &quot;bar&quot;
int(24)
string(3) &quot;foo&quot;
</pre></div>
    </div>
   </div>

   <blockquote class="note"><p><strong class="note">Note</strong>: 
    <p class="para">
     Avant PHP 8.0.0, les crochets et accolades pouvaient être utilisés de
     façon interchangeable pour accéder aux éléments d&#039;un tableau (e.g.
     <code class="literal">$array[42]</code> et <code class="literal">$array{42}</code> feraient
     tous deux la même chose dans l&#039;exemple ci-dessus).
     La syntaxe avec les accolades a été rendue obsolète en PHP 7.4.0 et n&#039;est
     plus supportée à partir de PHP 8.0.0.
    </p>
   </p></blockquote>

   <div class="example" id="example-9">
    <p><strong>Exemple #9 Faire référence à un tableau à la sortie d&#039;une fonction ou d&#039;une méthode</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: #007700">function </span><span style="color: #0000BB">getArray</span><span style="color: #007700">() {<br />    return array(</span><span style="color: #0000BB">1</span><span style="color: #007700">, </span><span style="color: #0000BB">2</span><span style="color: #007700">, </span><span style="color: #0000BB">3</span><span style="color: #007700">);<br />}<br /><br /></span><span style="color: #0000BB">$secondElement </span><span style="color: #007700">= </span><span style="color: #0000BB">getArray</span><span style="color: #007700">()[</span><span style="color: #0000BB">1</span><span style="color: #007700">];<br /><br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">$secondElement</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
    </div>

   </div>
   
   <blockquote class="note"><p><strong class="note">Note</strong>: 
    <p class="para">
     Une tentative d&#039;accès à une clé d&#039;un tableau qui n&#039;a pas été définie
     revient à tenter d&#039;accéder à une variable non définie : une alerte de
     niveau <strong><code><a href="errorfunc.constants.php#constant.e-warning">E_WARNING</a></code></strong> sera émise (E_NOTICE avant PHP 8.0.0),
     et le résultat vaudra <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong>.
    </p>
   </p></blockquote>
   <blockquote class="note"><p><strong class="note">Note</strong>: 
    <p class="para">
     Faire référence à un tableau à la sortie d&#039;une fonction ou d&#039;une méthode 
     d&#039;une valeur scalaire qui n&#039;est pas une <a href="language.types.string.php" class="link">chaîne de caractères</a> génère <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong>.
     Avant PHP 7.4.0, ceci ne générait pas de message d&#039;erreur.
     À partir de PHP 7.4.0, ceci émet une <strong><code><a href="errorfunc.constants.php#constant.e-notice">E_NOTICE</a></code></strong> ;
     À partir de PHP 8.0.0, ceci émet une <strong><code><a href="errorfunc.constants.php#constant.e-warning">E_WARNING</a></code></strong>.
    </p>
   </p></blockquote>
  </div>

  <div class="sect3" id="language.types.array.syntax.modifying">
   <h4 class="title">Création/modification avec des crochets</h4>

   <p class="para">
    Un tableau existant peut être modifié en y assignant explicitement des valeurs.
   </p>

   <p class="para">
    L&#039;assignation d&#039;une valeur dans un tableau est effectuée en spécifiant
    la clé, entre crochets. La clé peut également ne pas être renseignée, sous
    la forme : <code class="literal">[]</code>.
   </p>

   <pre class="synopsis">
$arr[<span class="replaceable">clé</span>] = <span class="replaceable">valeur</span>;
$arr[] = <span class="replaceable">valeur</span>;
// <span class="replaceable">clé</span> peut être un <a href="language.types.integer.php" class="link">entier</a> ou une <a href="language.types.string.php" class="link">chaîne de caractères</a>
// <span class="replaceable">valeur</span> peut être n&#039;importe quel type</pre>

   <p class="para">
    Si lors de l&#039;assignation <var class="varname">$arr</var> n&#039;existe pas ou est défini
    à <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong> ou <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong>, il sera créé ; c&#039;est ainsi une façon détournée de créer un tableau.
    Cette pratique est cependant découragée car si <var class="varname">$arr</var>
    contient déjà quelques valeurs (c.-à-d. <span class="type"><a href="language.types.string.php" class="type string">string</a></span> depuis la variable demandée)
    alors cette valeur restera en place et <code class="literal">[]</code> peut attendre
    un <a href="language.types.string.php#language.types.string.substr" class="link">opérateur d&#039;accès
    sur une chaîne</a>. C&#039;est toujours un meilleur choix que d&#039;initialiser
    une variable par affectation directe.
   </p>
   <blockquote class="note"><p><strong class="note">Note</strong>: 
    <span class="simpara">
     À partir de PHP 7.1.0, l&#039;application de l&#039;opérateur d&#039;index vide sur une 
     chaîne lève une erreur fatale. Auparavant, la chaîne aurait été convertie 
     silencieusement en tableau.
    </span>
   </p></blockquote>
   <blockquote class="note"><p><strong class="note">Note</strong>: 
    <span class="simpara">
     À partir de PHP 8.1.0, créer un nouveau tableau à partir de <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong> est obsolète.
     Créer un nouveau tableau depuis <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong> et les valeurs indéfinies est toujours autorisé.
    </span>
   </p></blockquote>

   <p class="para">
    Pour modifier une valeur en particulier, il convient d&#039;assigner une valeur en spécifiant
    sa clé. Pour effacer une paire clé/valeur, il convient d&#039;appeler la fonction
    <span class="function"><a href="function.unset.php" class="function">unset()</a></span> sur la clé désirée.
   </p>

   <div class="example" id="example-10">
    <p><strong>Exemple #10 Utilisation des crochets avec les tableaux</strong></p>
    <div class="example-contents">
<div class="annotation-interactive phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$arr </span><span style="color: #007700">= array(</span><span style="color: #0000BB">5 </span><span style="color: #007700">=&gt; </span><span style="color: #0000BB">1</span><span style="color: #007700">, </span><span style="color: #0000BB">12 </span><span style="color: #007700">=&gt; </span><span style="color: #0000BB">2</span><span style="color: #007700">);<br /><br /></span><span style="color: #0000BB">$arr</span><span style="color: #007700">[] = </span><span style="color: #0000BB">56</span><span style="color: #007700">;    </span><span style="color: #FF8000">// Identique à $arr[13] = 56;<br />                // à cet endroit du script<br /><br /></span><span style="color: #0000BB">$arr</span><span style="color: #007700">[</span><span style="color: #DD0000">"x"</span><span style="color: #007700">] = </span><span style="color: #0000BB">42</span><span style="color: #007700">; </span><span style="color: #FF8000">// Ceci ajoute un nouvel élément au<br />                // tableau avec la clé "x"<br /><br /></span><span style="color: #007700">unset(</span><span style="color: #0000BB">$arr</span><span style="color: #007700">[</span><span style="color: #0000BB">5</span><span style="color: #007700">]); </span><span style="color: #FF8000">// Ceci efface l'élément du tableau<br /><br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">$arr</span><span style="color: #007700">);<br /><br />unset(</span><span style="color: #0000BB">$arr</span><span style="color: #007700">);    </span><span style="color: #FF8000">// Ceci efface complètement le tableau<br /><br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">$arr</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
    </div>

   </div>

   <blockquote class="note"><p><strong class="note">Note</strong>: 
    <p class="para">
     Comme dit plus haut, si aucune clé n&#039;est spécifiée, l&#039;indice maximal
     existant est repris, et la nouvelle clé sera ce nombre, plus 1 (mais au moins 0).
     Si aucun indice entier n&#039;existe, la clé sera <code class="literal">0</code> (zéro).
    </p>

    <p class="para">
     Il est à noter que la clé entière maximale pour cette opération <em>n&#039;a
     pas besoin d&#039;exister dans le tableau au moment de la manipulation</em>.
     Elle doit seulement avoir existé dans le tableau à un moment ou un autre
     depuis la dernière fois où le tableau a été ré-indexé.
     Voici un exemple qui illustre ce principe :
    </p>

    <div class="informalexample">
     <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">// Création d'un tableau simple.<br /></span><span style="color: #0000BB">$array </span><span style="color: #007700">= array(</span><span style="color: #0000BB">1</span><span style="color: #007700">, </span><span style="color: #0000BB">2</span><span style="color: #007700">, </span><span style="color: #0000BB">3</span><span style="color: #007700">, </span><span style="color: #0000BB">4</span><span style="color: #007700">, </span><span style="color: #0000BB">5</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">print_r</span><span style="color: #007700">(</span><span style="color: #0000BB">$array</span><span style="color: #007700">);<br /><br /></span><span style="color: #FF8000">// Maintenant, on efface tous les éléments, mais on conserve le tableau :<br /></span><span style="color: #007700">foreach (</span><span style="color: #0000BB">$array </span><span style="color: #007700">as </span><span style="color: #0000BB">$i </span><span style="color: #007700">=&gt; </span><span style="color: #0000BB">$value</span><span style="color: #007700">) {<br />    unset(</span><span style="color: #0000BB">$array</span><span style="color: #007700">[</span><span style="color: #0000BB">$i</span><span style="color: #007700">]);<br />}<br /></span><span style="color: #0000BB">print_r</span><span style="color: #007700">(</span><span style="color: #0000BB">$array</span><span style="color: #007700">);<br /><br /></span><span style="color: #FF8000">// Ajout d'un élément (notez que la nouvelle clé est 5, et non 0).<br /></span><span style="color: #0000BB">$array</span><span style="color: #007700">[] = </span><span style="color: #0000BB">6</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">print_r</span><span style="color: #007700">(</span><span style="color: #0000BB">$array</span><span style="color: #007700">);<br /><br /></span><span style="color: #FF8000">// Ré-indexation :<br /></span><span style="color: #0000BB">$array </span><span style="color: #007700">= </span><span style="color: #0000BB">array_values</span><span style="color: #007700">(</span><span style="color: #0000BB">$array</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">$array</span><span style="color: #007700">[] = </span><span style="color: #0000BB">7</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">print_r</span><span style="color: #007700">(</span><span style="color: #0000BB">$array</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
     </div>

     <p class="para">L&#039;exemple ci-dessus va afficher :</p>
     <div class="example-contents screen">
<div class="annotation-interactive cdata"><pre>
Array
(
    [0] =&gt; 1
    [1] =&gt; 2
    [2] =&gt; 3
    [3] =&gt; 4
    [4] =&gt; 5
)
Array
(
)
Array
(
    [5] =&gt; 6
)
Array
(
    [0] =&gt; 6
    [1] =&gt; 7
)
</pre></div>
     </div>
    </div>

   </p></blockquote>

  </div>

  <div class="sect3" id="language.types.array.syntax.destructuring">
   <h4 class="title">Déstructuration de tableau</h4>

   <p class="para">
    Les tableaux peuvent être déstructurés en utilisant <code class="literal">[]</code>
    (à partir de PHP 7.1.0) ou <span class="function"><a href="function.list.php" class="function">list()</a></span>.
    Ces constructions peuvent être utilisées pour déstructurer un tableau en variables distinctes.
   </p>

   <div class="example" id="example-11">
    <p><strong>Exemple #11 Déstructuration de tableau</strong></p>
    <div class="example-contents">
<div class="annotation-interactive phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$tableau_source </span><span style="color: #007700">= [</span><span style="color: #DD0000">'foo'</span><span style="color: #007700">, </span><span style="color: #DD0000">'bar'</span><span style="color: #007700">, </span><span style="color: #DD0000">'baz'</span><span style="color: #007700">];<br /><br />[</span><span style="color: #0000BB">$foo</span><span style="color: #007700">, </span><span style="color: #0000BB">$bar</span><span style="color: #007700">, </span><span style="color: #0000BB">$baz</span><span style="color: #007700">] = </span><span style="color: #0000BB">$tableau_source</span><span style="color: #007700">;<br /><br />echo </span><span style="color: #0000BB">$foo</span><span style="color: #007700">, </span><span style="color: #0000BB">PHP_EOL</span><span style="color: #007700">;    </span><span style="color: #FF8000">// affiche "foo"<br /></span><span style="color: #007700">echo </span><span style="color: #0000BB">$bar</span><span style="color: #007700">, </span><span style="color: #0000BB">PHP_EOL</span><span style="color: #007700">;    </span><span style="color: #FF8000">// affiche "bar"<br /></span><span style="color: #007700">echo </span><span style="color: #0000BB">$baz</span><span style="color: #007700">, </span><span style="color: #0000BB">PHP_EOL</span><span style="color: #007700">;    </span><span style="color: #FF8000">// affiche "baz"<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
    </div>

   </div>

   <p class="para">
    La déstructuration de tableau peut être utilisée dans un <a href="control-structures.foreach.php" class="link"><code class="literal">foreach</code></a>
    pour déstructurer un tableau multidimensionnel tout en itérant sur celui-ci.
   </p>

   <div class="example" id="example-12">
    <p><strong>Exemple #12 Déstructuration de tableau dans un foreach</strong></p>
    <div class="example-contents">
<div class="annotation-interactive phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$tableau_source </span><span style="color: #007700">= [<br />    [</span><span style="color: #0000BB">1</span><span style="color: #007700">, </span><span style="color: #DD0000">'John'</span><span style="color: #007700">],<br />    [</span><span style="color: #0000BB">2</span><span style="color: #007700">, </span><span style="color: #DD0000">'Jane'</span><span style="color: #007700">],<br />];<br /><br />foreach (</span><span style="color: #0000BB">$tableau_source </span><span style="color: #007700">as [</span><span style="color: #0000BB">$id</span><span style="color: #007700">, </span><span style="color: #0000BB">$name</span><span style="color: #007700">]) {<br />    echo </span><span style="color: #DD0000">"</span><span style="color: #007700">{</span><span style="color: #0000BB">$id</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">}</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>

   <p class="para">
    Les éléments du tableau seront ignorés si la variable n&#039;est pas fournie.
    Le tableau commence toujours à l&#039;index <code class="literal">0</code>.
   </p>

   <div class="example" id="example-13">
    <p><strong>Exemple #13 Ignorer des éléments</strong></p>
    <div class="example-contents">
<div class="annotation-interactive phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$tableau_source </span><span style="color: #007700">= [</span><span style="color: #DD0000">'foo'</span><span style="color: #007700">, </span><span style="color: #DD0000">'bar'</span><span style="color: #007700">, </span><span style="color: #DD0000">'baz'</span><span style="color: #007700">];<br /><br /></span><span style="color: #FF8000">// Assigne l'élément situé à l'indice 2 à la variable $baz <br /></span><span style="color: #007700">[, , </span><span style="color: #0000BB">$baz</span><span style="color: #007700">] = </span><span style="color: #0000BB">$tableau_source</span><span style="color: #007700">;<br /><br />echo </span><span style="color: #0000BB">$baz</span><span style="color: #007700">;    </span><span style="color: #FF8000">// Affiche "baz"<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
    </div>

   </div>

   <p class="para">
    À partir de PHP 7.1.0, les tableaux associatifs peuvent aussi être déstructurés.
    Cela permet de sélectionner plus facilement le bon élément dans les tableaux
    à indexation numérique, car l&#039;index peut être explicitement spécifié.
   </p>

   <div class="example" id="example-14">
    <p><strong>Exemple #14 Déstructuration de tableau associatif</strong></p>
    <div class="example-contents">
<div class="annotation-interactive phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$tableau_source </span><span style="color: #007700">= [</span><span style="color: #DD0000">'foo' </span><span style="color: #007700">=&gt; </span><span style="color: #0000BB">1</span><span style="color: #007700">, </span><span style="color: #DD0000">'bar' </span><span style="color: #007700">=&gt; </span><span style="color: #0000BB">2</span><span style="color: #007700">, </span><span style="color: #DD0000">'baz' </span><span style="color: #007700">=&gt; </span><span style="color: #0000BB">3</span><span style="color: #007700">];<br /><br /></span><span style="color: #FF8000">// Assigne l'élément situé à l'indice 'baz' à la variable $three<br /></span><span style="color: #007700">[</span><span style="color: #DD0000">'baz' </span><span style="color: #007700">=&gt; </span><span style="color: #0000BB">$three</span><span style="color: #007700">] = </span><span style="color: #0000BB">$tableau_source</span><span style="color: #007700">;<br /><br />echo </span><span style="color: #0000BB">$three</span><span style="color: #007700">, </span><span style="color: #0000BB">PHP_EOL</span><span style="color: #007700">;    </span><span style="color: #FF8000">// Affiche "3"<br /><br /></span><span style="color: #0000BB">$tableau_source </span><span style="color: #007700">= [</span><span style="color: #DD0000">'foo'</span><span style="color: #007700">, </span><span style="color: #DD0000">'bar'</span><span style="color: #007700">, </span><span style="color: #DD0000">'baz'</span><span style="color: #007700">];<br /><br /></span><span style="color: #FF8000">// Assigne l'élément situé à l'indice 2 à la variable $baz<br /></span><span style="color: #007700">[</span><span style="color: #0000BB">2 </span><span style="color: #007700">=&gt; </span><span style="color: #0000BB">$baz</span><span style="color: #007700">] = </span><span style="color: #0000BB">$tableau_source</span><span style="color: #007700">;<br /><br />echo </span><span style="color: #0000BB">$baz</span><span style="color: #007700">, </span><span style="color: #0000BB">PHP_EOL</span><span style="color: #007700">;    </span><span style="color: #FF8000">// Affiche "baz"<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
    </div>

   </div>

   <p class="para">
    La déstructuration de tableau peut être utilisée pour permuter facilement
    deux variables.
   </p>

   <div class="example" id="example-15">
    <p><strong>Exemple #15 Permuter deux variables</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: #0000BB">1</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$b </span><span style="color: #007700">= </span><span style="color: #0000BB">2</span><span style="color: #007700">;<br /><br />[</span><span style="color: #0000BB">$b</span><span style="color: #007700">, </span><span style="color: #0000BB">$a</span><span style="color: #007700">] = [</span><span style="color: #0000BB">$a</span><span style="color: #007700">, </span><span style="color: #0000BB">$b</span><span style="color: #007700">];<br /><br />echo </span><span style="color: #0000BB">$a</span><span style="color: #007700">, </span><span style="color: #0000BB">PHP_EOL</span><span style="color: #007700">;    </span><span style="color: #FF8000">// Affiche 2<br /></span><span style="color: #007700">echo </span><span style="color: #0000BB">$b</span><span style="color: #007700">, </span><span style="color: #0000BB">PHP_EOL</span><span style="color: #007700">;    </span><span style="color: #FF8000">// Affiche 1<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
    </div>

   </div>

   <blockquote class="note"><p><strong class="note">Note</strong>: 
    <p class="para">
     L&#039;opérateur de décomposition (<code class="literal">...</code>) n&#039;est pas
     supporté dans les assignations.
    </p>
   </p></blockquote>

   <blockquote class="note"><p><strong class="note">Note</strong>: 
    <p class="para">
     Une tentative d&#039;accès à une clé d&#039;un tableau qui n&#039;a pas été définie
     revient à tenter d&#039;accéder à une variable non définie : une alerte de
     niveau <strong><code><a href="errorfunc.constants.php#constant.e-warning">E_WARNING</a></code></strong> sera émise (E_NOTICE avant PHP 8.0.0),
     et le résultat vaudra <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong>.
    </p>
   </p></blockquote>
   <blockquote class="note"><p><strong class="note">Note</strong>: 
    <p class="para">
     La déstructuration d’une valeur scalaire affecte <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong> à toutes les variables.
    </p>
   </p></blockquote>
  </div>

 </div>

 <div class="sect2" id="language.types.array.useful-funcs">
  <h3 class="title">Fonctions utiles</h3>

  <p class="para">
   Il y a beaucoup de fonctions utiles pour travailler avec les tableaux.
   Il est recommandé de lire la section de ce manuel sur les
   <a href="ref.array.php" class="link">fonctions</a> en rapport avec les tableaux.
  </p>

  <blockquote class="note"><p><strong class="note">Note</strong>: 
   <p class="para">
    La fonction <span class="function"><a href="function.unset.php" class="function">unset()</a></span> permet d&#039;effacer les clés d&#039;un tableau.
    Il est à noter que le tableau ne sera <em>pas</em>
    ré-indexé. Pour réaliser un effacement complet et une ré-indexation
    du tableau, il faut utiliser la fonction
    <span class="function"><a href="function.array-values.php" class="function">array_values()</a></span>.
   </p>

   <div class="example" id="example-16">
    <p><strong>Exemple #16 Effacer des éléments intermédiaires</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">= array(</span><span style="color: #0000BB">1 </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">'one'</span><span style="color: #007700">, </span><span style="color: #0000BB">2 </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">'two'</span><span style="color: #007700">, </span><span style="color: #0000BB">3 </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">'three'</span><span style="color: #007700">);<br /><br /></span><span style="color: #FF8000">/* produira un tableau comme ceci<br />   $a = array(1 =&gt; 'one', 3 =&gt; 'three');<br />   et NON un tableau comme ceci<br />   $a = array(1 =&gt; 'one', 2 =&gt;'three');<br />*/<br /></span><span style="color: #007700">unset(</span><span style="color: #0000BB">$a</span><span style="color: #007700">[</span><span style="color: #0000BB">2</span><span style="color: #007700">]);<br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">$a</span><span style="color: #007700">);<br /><br /></span><span style="color: #0000BB">$b </span><span style="color: #007700">= </span><span style="color: #0000BB">array_values</span><span style="color: #007700">(</span><span style="color: #0000BB">$a</span><span style="color: #007700">);<br /></span><span style="color: #FF8000">// Maintenant, $b vaut array(0 =&gt; 'one', 1 =&gt;'three')<br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">$b</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
    </div>

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

  <p class="para">
   La structure de contrôle <a href="control-structures.foreach.php" class="link"><code class="literal">foreach</code></a> existe tout spécialement 
   pour les tableaux. Elle fournit une manière pratique
   de parcourir un tableau.
  </p>
 </div>

 <div class="sect2" id="language.types.array.donts">
  <h3 class="title">Ce qu&#039;il est possible de faire ou non avec un tableau</h3>

  <div class="sect3" id="language.types.array.foo-bar">
   <h4 class="title">Pourquoi <code class="literal">$foo[bar]</code> est incorrect ?</h4>

   <p class="para">
    Utiliser toujours des guillemets autour d&#039;un index littéral. Par exemple,
    <code class="literal">$foo[&#039;bar&#039;]</code> est correct, alors que
    <code class="literal">$foo[bar]</code> ne l&#039;est pas. Mais pourquoi ? il est courant
    de rencontrer ce genre de syntaxe dans d&#039;anciens scripts :
   </p>

   <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">[</span><span style="color: #0000BB">bar</span><span style="color: #007700">] = </span><span style="color: #DD0000">'enemy'</span><span style="color: #007700">;<br />echo </span><span style="color: #0000BB">$foo</span><span style="color: #007700">[</span><span style="color: #0000BB">bar</span><span style="color: #007700">];<br /></span><span style="color: #FF8000">// etc<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
    </div>

   </div>

   <p class="para">
    C&#039;est incorrect, mais ça fonctionne. La raison est que ce code a une constante
    indéfinie (<code class="literal">bar</code>) plutôt qu&#039;une <a href="language.types.string.php" class="link">chaîne de caractères</a>
    (<code class="literal">&#039;bar&#039;</code> - notez les guillemets).
    Cela fonctionne car PHP convertit automatiquement une <em>chaîne nue</em>
    (une chaîne sans guillemets qui ne correspond à aucun symbole connu) en une chaîne
    qui la contient. Actuellement, s&#039;il n&#039;y a aucune constante nommée <strong><code>bar</code></strong>,
    alors PHP substituera <code class="literal">&#039;bar&#039;</code> dans la chaîne et l&#039;utilisera.
   </p>
   
   <div class="warning"><strong class="warning">Avertissement</strong>
    <p class="simpara">
     La solution de recours qui considère une constante non-définie comme une
     chaîne de caractères nue est une erreur de niveau <strong><code><a href="errorfunc.constants.php#constant.e-notice">E_NOTICE</a></code></strong>.
     Ceci est obsolète à partir de PHP 7.2.0, et émet une erreur de niveau
     <strong><code><a href="errorfunc.constants.php#constant.e-warning">E_WARNING</a></code></strong>.
     À partir de PHP 8.0.0, ceci a été retiré et lance une exception
     <span class="classname"><a href="class.error.php" class="classname">Error</a></span>.
    </p>
   </div>

   <p class="simpara">
    Ceci ne signifie pas qu&#039;il faut <em>toujours</em> mettre la clé entre guillemets.
    Ne pas utiliser de guillemets avec les clés qui sont des
    <a href="language.constants.php" class="link">constantes</a> ou des
    <a href="language.variables.php" class="link">variables</a>, car cela empêcherait PHP de
    les interpréter.
   </p>

   <div class="example" id="example-17">
    <p><strong>Exemple #17 Clé entre guillemets</strong></p>
    <div class="example-contents">
<div class="annotation-interactive phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />error_reporting</span><span style="color: #007700">(</span><span style="color: #0000BB">E_ALL</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">ini_set</span><span style="color: #007700">(</span><span style="color: #DD0000">'display_errors'</span><span style="color: #007700">, </span><span style="color: #0000BB">true</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">ini_set</span><span style="color: #007700">(</span><span style="color: #DD0000">'html_errors'</span><span style="color: #007700">, </span><span style="color: #0000BB">false</span><span style="color: #007700">);<br /><br /></span><span style="color: #FF8000">// Tableau simple :<br /></span><span style="color: #0000BB">$array </span><span style="color: #007700">= array(</span><span style="color: #0000BB">1</span><span style="color: #007700">, </span><span style="color: #0000BB">2</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">$count </span><span style="color: #007700">= </span><span style="color: #0000BB">count</span><span style="color: #007700">(</span><span style="color: #0000BB">$array</span><span style="color: #007700">);<br /><br />for (</span><span style="color: #0000BB">$i </span><span style="color: #007700">= </span><span style="color: #0000BB">0</span><span style="color: #007700">; </span><span style="color: #0000BB">$i </span><span style="color: #007700">&lt; </span><span style="color: #0000BB">$count</span><span style="color: #007700">; </span><span style="color: #0000BB">$i</span><span style="color: #007700">++) {<br />    echo </span><span style="color: #DD0000">"\nVérification de </span><span style="color: #0000BB">$i</span><span style="color: #DD0000"> : \n"</span><span style="color: #007700">;<br />    echo </span><span style="color: #DD0000">"Mauvais : " </span><span style="color: #007700">. </span><span style="color: #0000BB">$array</span><span style="color: #007700">[</span><span style="color: #DD0000">'$i'</span><span style="color: #007700">] . </span><span style="color: #DD0000">"\n"</span><span style="color: #007700">;<br />    echo </span><span style="color: #DD0000">"Bon : " </span><span style="color: #007700">. </span><span style="color: #0000BB">$array</span><span style="color: #007700">[</span><span style="color: #0000BB">$i</span><span style="color: #007700">] . </span><span style="color: #DD0000">"\n"</span><span style="color: #007700">;<br />    echo </span><span style="color: #DD0000">"Mauvais : </span><span style="color: #007700">{</span><span style="color: #0000BB">$array</span><span style="color: #007700">[</span><span style="color: #DD0000">'$i'</span><span style="color: #007700">]}</span><span style="color: #DD0000">\n"</span><span style="color: #007700">;<br />    echo </span><span style="color: #DD0000">"Bon : </span><span style="color: #007700">{</span><span style="color: #0000BB">$array</span><span style="color: #007700">[</span><span style="color: #0000BB">$i</span><span style="color: #007700">]}</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>
    <p class="para">L&#039;exemple ci-dessus va afficher :</p>
    <div class="example-contents screen">
<div class="annotation-interactive cdata"><pre>
Vérification de 0 :
Notice: Undefined index:  $i in /path/to/script.html on line 9
Mauvais :
Bon : 1
Notice: Undefined index:  $i in /path/to/script.html on line 11
Mauvais :
Bon : 1

Vérification de 1 :
Notice: Undefined index:  $i in /path/to/script.html on line 9
Mauvais :
Bon : 2
Notice: Undefined index:  $i in /path/to/script.html on line 11
Mauvais :
Bon : 2
</pre></div>
   </div>

   <p class="para">
    Plus d&#039;exemples pour expliquer ce comportement :
   </p>

   <div class="example" id="example-18">
    <p><strong>Exemple #18 Plus d&#039;exemples</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">// Affichons toutes les erreurs<br /></span><span style="color: #0000BB">error_reporting</span><span style="color: #007700">(</span><span style="color: #0000BB">E_ALL</span><span style="color: #007700">);<br /><br /></span><span style="color: #0000BB">$arr </span><span style="color: #007700">= array(</span><span style="color: #DD0000">'fruit' </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">'apple'</span><span style="color: #007700">, </span><span style="color: #DD0000">'veggie' </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">'carrot'</span><span style="color: #007700">);<br /><br /></span><span style="color: #FF8000">// Correct<br /></span><span style="color: #007700">echo </span><span style="color: #0000BB">$arr</span><span style="color: #007700">[</span><span style="color: #DD0000">'fruit'</span><span style="color: #007700">], </span><span style="color: #0000BB">PHP_EOL</span><span style="color: #007700">;  </span><span style="color: #FF8000">// apple<br /></span><span style="color: #007700">echo </span><span style="color: #0000BB">$arr</span><span style="color: #007700">[</span><span style="color: #DD0000">'veggie'</span><span style="color: #007700">], </span><span style="color: #0000BB">PHP_EOL</span><span style="color: #007700">; </span><span style="color: #FF8000">// carrot<br /><br />// Incorrect. Ceci ne fonctionne pas et lance une erreur PHP<br />// on utilise la constante nommée fruit qui est indéfinie<br />// <br />// Error: Undefined constant "fruit"<br /></span><span style="color: #007700">try {<br />    echo </span><span style="color: #0000BB">$arr</span><span style="color: #007700">[</span><span style="color: #0000BB">fruit</span><span style="color: #007700">];<br />} catch (</span><span style="color: #0000BB">Error $e</span><span style="color: #007700">) {<br />    echo </span><span style="color: #0000BB">get_class</span><span style="color: #007700">(</span><span style="color: #0000BB">$e</span><span style="color: #007700">), </span><span style="color: #DD0000">': '</span><span style="color: #007700">, </span><span style="color: #0000BB">$e</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">getMessage</span><span style="color: #007700">(), </span><span style="color: #0000BB">PHP_EOL</span><span style="color: #007700">;<br />}<br /><br /></span><span style="color: #FF8000">// Ceci définit une constante pour expliquer ce qui ne va pas. La valeur 'veggie'<br />// est assignée à la constante nommée fruit.<br /></span><span style="color: #0000BB">define</span><span style="color: #007700">(</span><span style="color: #DD0000">'fruit'</span><span style="color: #007700">, </span><span style="color: #DD0000">'veggie'</span><span style="color: #007700">);<br /><br /></span><span style="color: #FF8000">// Noter la différence maintenant<br /></span><span style="color: #007700">echo </span><span style="color: #0000BB">$arr</span><span style="color: #007700">[</span><span style="color: #DD0000">'fruit'</span><span style="color: #007700">], </span><span style="color: #0000BB">PHP_EOL</span><span style="color: #007700">;  </span><span style="color: #FF8000">// apple<br /></span><span style="color: #007700">echo </span><span style="color: #0000BB">$arr</span><span style="color: #007700">[</span><span style="color: #0000BB">fruit</span><span style="color: #007700">], </span><span style="color: #0000BB">PHP_EOL</span><span style="color: #007700">;    </span><span style="color: #FF8000">// carrot<br /><br />// Ce qui suit est correct, car c'est dans une chaîne. Les constantes ne sont pas recherchées<br />// dans les chaînes, et donc, aucune erreur ne sera émise<br /></span><span style="color: #007700">echo </span><span style="color: #DD0000">"Hello </span><span style="color: #0000BB">$arr</span><span style="color: #007700">[</span><span style="color: #0000BB">fruit</span><span style="color: #007700">]</span><span style="color: #DD0000">"</span><span style="color: #007700">, </span><span style="color: #0000BB">PHP_EOL</span><span style="color: #007700">;      </span><span style="color: #FF8000">// Hello apple<br /><br />// Avec une exception : les accolades autour d'un tableau dans une chaîne permettent<br />// aux constantes d'être interprétées<br /></span><span style="color: #007700">echo </span><span style="color: #DD0000">"Hello </span><span style="color: #007700">{</span><span style="color: #0000BB">$arr</span><span style="color: #007700">[</span><span style="color: #0000BB">fruit</span><span style="color: #007700">]}</span><span style="color: #DD0000">"</span><span style="color: #007700">, </span><span style="color: #0000BB">PHP_EOL</span><span style="color: #007700">;    </span><span style="color: #FF8000">// Hello carrot<br /></span><span style="color: #007700">echo </span><span style="color: #DD0000">"Hello </span><span style="color: #007700">{</span><span style="color: #0000BB">$arr</span><span style="color: #007700">[</span><span style="color: #DD0000">'fruit'</span><span style="color: #007700">]}</span><span style="color: #DD0000">"</span><span style="color: #007700">, </span><span style="color: #0000BB">PHP_EOL</span><span style="color: #007700">;  </span><span style="color: #FF8000">// Hello apple<br /><br />// La concaténation est une autre solution<br /></span><span style="color: #007700">echo </span><span style="color: #DD0000">"Hello " </span><span style="color: #007700">. </span><span style="color: #0000BB">$arr</span><span style="color: #007700">[</span><span style="color: #DD0000">'fruit'</span><span style="color: #007700">], </span><span style="color: #0000BB">PHP_EOL</span><span style="color: #007700">; </span><span style="color: #FF8000">// Hello apple<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
    </div>

   </div>

   <div class="informalexample">
    <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">// Ceci ne fonctionnera pas, et provoquera une erreur d'analyse du type :<br />// Parse error: parse error, expecting T_STRING' or T_VARIABLE' or T_NUM_STRING'<br />// Ceci s'applique aussi à l'utilisation des superglobales dans les chaînes<br /></span><span style="color: #007700">print </span><span style="color: #DD0000">"Hello </span><span style="color: #0000BB">$arr</span><span style="color: #007700">[</span><span style="color: #DD0000">'fruit']"</span><span style="color: #007700">;<br />print </span><span style="color: #DD0000">"Hello </span><span style="color: #0000BB">$_GET</span><span style="color: #007700">[</span><span style="color: #DD0000">'foo']"</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
    </div>

   </div>

   <p class="para">
    Comme vu dans la section &quot;<a href="language.types.array.php#language.types.array.syntax" class="link">syntaxe</a>&quot;,
    ce qui se trouve entre crochets (&#039;<code class="literal">[</code>&#039; et
    &#039;<code class="literal">]</code>&#039;) doit être une expression. Ceci signifie que le code ci-dessous
    fonctionne :
   </p>

   <div class="informalexample">
    <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: #007700">echo </span><span style="color: #0000BB">$arr</span><span style="color: #007700">[</span><span style="color: #0000BB">somefunc</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="para">
    C&#039;est un exemple d&#039;utilisation d&#039;une fonction retournant une valeur qui sera
    la clé du tableau. PHP comprend également les constantes :
   </p>

   <div class="informalexample">
    <div class="example-contents">
<div class="annotation-interactive phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$error_descriptions</span><span style="color: #007700">[</span><span style="color: #0000BB">E_ERROR</span><span style="color: #007700">]   = </span><span style="color: #DD0000">"A fatal error has occurred"</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$error_descriptions</span><span style="color: #007700">[</span><span style="color: #0000BB">E_WARNING</span><span style="color: #007700">] = </span><span style="color: #DD0000">"PHP issued a warning"</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$error_descriptions</span><span style="color: #007700">[</span><span style="color: #0000BB">E_NOTICE</span><span style="color: #007700">]  = </span><span style="color: #DD0000">"This is just an informal notice"</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
    </div>

   </div>

   <p class="para">
    Noter que <strong><code><a href="errorfunc.constants.php#constant.e-error">E_ERROR</a></code></strong> est également un identifiant valide,
    tout comme <code class="literal">bar</code> dans le premier exemple. Mais le dernier
    exemple est finalement le même que celui-ci :
   </p>

   <div class="informalexample">
    <div class="example-contents">
<div class="annotation-interactive phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$error_descriptions</span><span style="color: #007700">[</span><span style="color: #0000BB">1</span><span style="color: #007700">] = </span><span style="color: #DD0000">"A fatal error has occurred"</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$error_descriptions</span><span style="color: #007700">[</span><span style="color: #0000BB">2</span><span style="color: #007700">] = </span><span style="color: #DD0000">"PHP issued a warning"</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$error_descriptions</span><span style="color: #007700">[</span><span style="color: #0000BB">8</span><span style="color: #007700">] = </span><span style="color: #DD0000">"This is just an informal notice"</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
    </div>

   </div>
   
   <p class="para">
    car <strong><code><a href="errorfunc.constants.php#constant.e-error">E_ERROR</a></code></strong> vaut <code class="literal">1</code>, etc.
   </p>

   <div class="sect4" id="language.types.array.foo-bar.why">
    <h5 class="title">Alors, pourquoi est-ce une mauvaise pratique ?</h5>

    <p class="para">
     Dans le futur, les développeurs PHP peuvent vouloir ajouter une autre
     constante ou un autre mot clé, ou bien une constante dans une autre partie
     du code qui peut interférer. Par exemple, il est toujours incorrect d&#039;utiliser
     le mot <code class="literal">empty</code> et <code class="literal">default</code>, sachant que ce sont
     des <a href="reserved.php" class="link">mots réservés</a>.
    </p>

    <blockquote class="note"><p><strong class="note">Note</strong>: 
     <span class="simpara">
      Pour être plus clair, dans une chaîne entourée de guillemets doubles,
      il est valide de ne pas entourer les index d&#039;un tableau avec des
      guillemets, et donc, <code class="literal">&quot;$foo[bar]&quot;</code> est valide. Voir
      les exemples ci-dessous pour plus de détails mais aussi la section sur
      l&#039;<a href="language.types.string.php#language.types.string.parsing" class="link">analyse des variables
      dans les chaînes</a>.
     </span>
    </p></blockquote>

   </div>
  </div>
 </div>

 <div class="sect2" id="language.types.array.casting">
  <h3 class="title">Conversion en un tableau</h3>

  <p class="para">
   Pour tous les types <a href="language.types.integer.php" class="link">entier</a>, <a href="language.types.float.php" class="link">nombre décimal</a>, <a href="language.types.string.php" class="link">chaîne de caractères</a>, <a href="language.types.boolean.php" class="link">booléen</a> et <span class="type"><a href="language.types.resource.php" class="type resource">resource</a></span>,
   le fait de convertir une valeur en un tableau résulte en un tableau contenant
   un seul élément dont l&#039;index vaut zéro et la valeur, une valeur scalaire convertie.
   En d&#039;autres termes, <code class="code">(array) $scalarValue</code> est exactement la
   même chose que <code class="literal">array($scalarValue)</code>.
  </p>

  <p class="para">
   Si un objet est converti en un tableau, le résultat sera un tableau dont les
   éléments sont les propriétés de l&#039;objet. Les clés sont les noms des membres,
   avec une légère exception : les variables ayant un nom sous forme d&#039;entier sont
   inaccessibles ; les variables privées auront le nom de la classe
   ajouté au nom de la variable ; les variables protégées auront un &#039;*&#039; ajouté
   au nom de la variable.
   Ces valeurs préfixées ont des octets <code class="literal">NUL</code> des deux côtés.
   Les <a href="language.oop5.properties.php#language.oop5.properties.typed-properties" class="link">propriétés typées</a>
   non-initialisées sont silencieusement écartées.
  </p>

  <div class="example" id="example-19">
   <p><strong>Exemple #19 Conversion en tableau</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: #007700">class </span><span style="color: #0000BB">A </span><span style="color: #007700">{<br />    private </span><span style="color: #0000BB">$B</span><span style="color: #007700">;<br />    protected </span><span style="color: #0000BB">$C</span><span style="color: #007700">;<br />    public </span><span style="color: #0000BB">$D</span><span style="color: #007700">;<br />    function </span><span style="color: #0000BB">__construct</span><span style="color: #007700">()<br />    {<br />        </span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;{</span><span style="color: #0000BB">1</span><span style="color: #007700">} = </span><span style="color: #0000BB">null</span><span style="color: #007700">;<br />    }<br />}<br /></span><span style="color: #0000BB">var_export</span><span style="color: #007700">((array) new </span><span style="color: #0000BB">A</span><span style="color: #007700">());<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 cdata"><pre>
array (
  &#039;&#039; . &quot;\0&quot; . &#039;A&#039; . &quot;\0&quot; . &#039;B&#039; =&gt; NULL,
  &#039;&#039; . &quot;\0&quot; . &#039;*&#039; . &quot;\0&quot; . &#039;C&#039; =&gt; NULL,
  &#039;D&#039; =&gt; NULL,
  1 =&gt; NULL,
)
</pre></div>
   </div>
  </div>

  <p class="para">
   Ces octets <code class="literal">NUL</code> peuvent amener à des résultats inattendus :
  </p>

  <div class="example" id="example-20">
   <p><strong>Exemple #20 Conversion d&#039;un objet en tableau</strong></p>
   <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: #007700">class </span><span style="color: #0000BB">A </span><span style="color: #007700">{<br />    private </span><span style="color: #0000BB">$A</span><span style="color: #007700">; </span><span style="color: #FF8000">// Ceci devient '\0A\0A'<br /></span><span style="color: #007700">}<br /><br />class </span><span style="color: #0000BB">B </span><span style="color: #007700">extends </span><span style="color: #0000BB">A </span><span style="color: #007700">{<br />    private </span><span style="color: #0000BB">$A</span><span style="color: #007700">; </span><span style="color: #FF8000">// Ceci devient '\0B\0A'<br />    </span><span style="color: #007700">public </span><span style="color: #0000BB">$AA</span><span style="color: #007700">; </span><span style="color: #FF8000">// Ceci devient 'AA'<br /></span><span style="color: #007700">}<br /><br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">((array) new </span><span style="color: #0000BB">B</span><span style="color: #007700">());<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 cdata"><pre>
array(3) {
  [&quot;BA&quot;]=&gt;
  NULL
  [&quot;AA&quot;]=&gt;
  NULL
  [&quot;AA&quot;]=&gt;
  NULL
}
</pre></div>
   </div>
  </div>

  <p class="para">
   Ici, on pourrait penser qu&#039;il y a 2 clés nommées &#039;AA&#039;, alors qu&#039;une est
   actuellement nommée &#039;\0A\0A&#039;.
  </p>

  <p class="para">
   La conversion de <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong> en un tableau résulte en un tableau vide.
  </p>
 </div>

 <div class="sect2" id="language.types.array.comparing">
  <h3 class="title">Comparaison</h3>

  <p class="para">
   Il est possible de comparer plusieurs tableaux avec la fonction
   <span class="function"><a href="function.array-diff.php" class="function">array_diff()</a></span> ainsi qu&#039;avec les
   <a href="language.operators.array.php" class="link">opérateurs de tableaux</a>.
  </p>
 </div>

 <div class="sect2" id="language.types.array.unpacking">
  <h3 class="title">Déballage des tableaux</h3>

  <p class="para">
   Un tableau préfixé par <code class="code">...</code> sera déballé sur place lors de la définition du tableau.
   Seuls les tableaux et les objets qui implémentent <span class="interfacename"><a href="class.traversable.php" class="interfacename">Traversable</a></span> peuvent être déballés.
   Le déballage de tableau avec <code class="code">...</code> est disponible à partir de PHP 7.4.0. C&#039;est aussi appelé l&#039;opérateur de décomposition.
  </p>

  <p class="para">
   Il est possible de déballer plusieurs fois, et d&#039;ajouter des éléments
   normaux avant et après l&#039;opérateur <code class="code">...</code> :

   <div class="example" id="example-21">
    <p><strong>Exemple #21 Déballage simple de tableau</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">// Utilisation de la syntaxe de tableau courte.<br />// Fonctionne avec array() aussi.<br /></span><span style="color: #0000BB">$arr1 </span><span style="color: #007700">= [</span><span style="color: #0000BB">1</span><span style="color: #007700">, </span><span style="color: #0000BB">2</span><span style="color: #007700">, </span><span style="color: #0000BB">3</span><span style="color: #007700">];<br /></span><span style="color: #0000BB">$arr2 </span><span style="color: #007700">= [...</span><span style="color: #0000BB">$arr1</span><span style="color: #007700">]; </span><span style="color: #FF8000">// [1, 2, 3]<br /></span><span style="color: #0000BB">$arr3 </span><span style="color: #007700">= [</span><span style="color: #0000BB">0</span><span style="color: #007700">, ...</span><span style="color: #0000BB">$arr1</span><span style="color: #007700">]; </span><span style="color: #FF8000">// [0, 1, 2, 3]<br /></span><span style="color: #0000BB">$arr4 </span><span style="color: #007700">= [...</span><span style="color: #0000BB">$arr1</span><span style="color: #007700">, ...</span><span style="color: #0000BB">$arr2</span><span style="color: #007700">, </span><span style="color: #0000BB">111</span><span style="color: #007700">]; </span><span style="color: #FF8000">// [1, 2, 3, 1, 2, 3, 111]<br /></span><span style="color: #0000BB">$arr5 </span><span style="color: #007700">= [...</span><span style="color: #0000BB">$arr1</span><span style="color: #007700">, ...</span><span style="color: #0000BB">$arr1</span><span style="color: #007700">]; </span><span style="color: #FF8000">// [1, 2, 3, 1, 2, 3]<br /><br /></span><span style="color: #007700">function </span><span style="color: #0000BB">getArr</span><span style="color: #007700">() {<br />  return [</span><span style="color: #DD0000">'a'</span><span style="color: #007700">, </span><span style="color: #DD0000">'b'</span><span style="color: #007700">];<br />}<br /></span><span style="color: #0000BB">$arr6 </span><span style="color: #007700">= [...</span><span style="color: #0000BB">getArr</span><span style="color: #007700">(), </span><span style="color: #DD0000">'c' </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">'d'</span><span style="color: #007700">]; </span><span style="color: #FF8000">// ['a', 'b', 'c' =&gt; 'd']<br /><br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">$arr1</span><span style="color: #007700">, </span><span style="color: #0000BB">$arr2</span><span style="color: #007700">, </span><span style="color: #0000BB">$arr3</span><span style="color: #007700">, </span><span style="color: #0000BB">$arr4</span><span style="color: #007700">, </span><span style="color: #0000BB">$arr5</span><span style="color: #007700">, </span><span style="color: #0000BB">$arr6</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
    </div>

   </div>
  </p>

  <p class="para">
   Déballer un tableau avec l&#039;opérateur <code class="code">...</code> suit les sémantiques de la fonction <span class="function"><a href="function.array-merge.php" class="function">array_merge()</a></span>.
   C&#039;est-à-dire, que les clés ultérieures écrasent les valeurs antérieures
   et les clés numériques sont renumérotées :

   <div class="example" id="example-22">
    <p><strong>Exemple #22 Déballage de tableau avec clé dupliquée</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">// clé de type string<br /></span><span style="color: #0000BB">$arr1 </span><span style="color: #007700">= [</span><span style="color: #DD0000">"a" </span><span style="color: #007700">=&gt; </span><span style="color: #0000BB">1</span><span style="color: #007700">];<br /></span><span style="color: #0000BB">$arr2 </span><span style="color: #007700">= [</span><span style="color: #DD0000">"a" </span><span style="color: #007700">=&gt; </span><span style="color: #0000BB">2</span><span style="color: #007700">];<br /></span><span style="color: #0000BB">$arr3 </span><span style="color: #007700">= [</span><span style="color: #DD0000">"a" </span><span style="color: #007700">=&gt; </span><span style="color: #0000BB">0</span><span style="color: #007700">, ...</span><span style="color: #0000BB">$arr1</span><span style="color: #007700">, ...</span><span style="color: #0000BB">$arr2</span><span style="color: #007700">];<br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">$arr3</span><span style="color: #007700">); </span><span style="color: #FF8000">// ["a" =&gt; 2]<br /><br />// clé de type int<br /></span><span style="color: #0000BB">$arr4 </span><span style="color: #007700">= [</span><span style="color: #0000BB">1</span><span style="color: #007700">, </span><span style="color: #0000BB">2</span><span style="color: #007700">, </span><span style="color: #0000BB">3</span><span style="color: #007700">];<br /></span><span style="color: #0000BB">$arr5 </span><span style="color: #007700">= [</span><span style="color: #0000BB">4</span><span style="color: #007700">, </span><span style="color: #0000BB">5</span><span style="color: #007700">, </span><span style="color: #0000BB">6</span><span style="color: #007700">];<br /></span><span style="color: #0000BB">$arr6 </span><span style="color: #007700">= [...</span><span style="color: #0000BB">$arr4</span><span style="color: #007700">, ...</span><span style="color: #0000BB">$arr5</span><span style="color: #007700">];<br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">$arr6</span><span style="color: #007700">); </span><span style="color: #FF8000">// [1, 2, 3, 4, 5, 6]<br />// Ce qui correspond à [0 =&gt; 1, 1 =&gt; 2, 2 =&gt; 3, 3 =&gt; 4, 4 =&gt; 5, 5 =&gt; 6]<br />// où les clés entières originales n'ont pas été conservées.<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
    </div>

   </div>
  </p>

  <blockquote class="note"><p><strong class="note">Note</strong>: 
   <p class="para">
    Les clés qui ne sont ni des entiers, ni des chaînes lancent une <span class="classname"><a href="class.typeerror.php" class="classname">TypeError</a></span>.
    De telles clés peuvent uniquement être générées par un objet <span class="interfacename"><a href="class.traversable.php" class="interfacename">Traversable</a></span>.
   </p>
  </p></blockquote>
  <blockquote class="note"><p><strong class="note">Note</strong>: 
   <p class="para">
    Avant PHP 8.1, le déballage de tableau qui avait une clé sous forme de chaîne n&#039;est pas supporté :
   </p>
   <div class="informalexample">
    <div class="example-contents">
<div class="annotation-interactive phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /><br />$arr1 </span><span style="color: #007700">= [</span><span style="color: #0000BB">1</span><span style="color: #007700">, </span><span style="color: #0000BB">2</span><span style="color: #007700">, </span><span style="color: #0000BB">3</span><span style="color: #007700">];<br /></span><span style="color: #0000BB">$arr2 </span><span style="color: #007700">= [</span><span style="color: #DD0000">'a' </span><span style="color: #007700">=&gt; </span><span style="color: #0000BB">4</span><span style="color: #007700">];<br /></span><span style="color: #0000BB">$arr3 </span><span style="color: #007700">= [...</span><span style="color: #0000BB">$arr1</span><span style="color: #007700">, ...</span><span style="color: #0000BB">$arr2</span><span style="color: #007700">];<br /></span><span style="color: #FF8000">// Fatal error: Uncaught Error: Cannot unpack array with string keys in example.php:5<br /><br /></span><span style="color: #0000BB">$arr4 </span><span style="color: #007700">= [</span><span style="color: #0000BB">1</span><span style="color: #007700">, </span><span style="color: #0000BB">2</span><span style="color: #007700">, </span><span style="color: #0000BB">3</span><span style="color: #007700">];<br /></span><span style="color: #0000BB">$arr5 </span><span style="color: #007700">= [</span><span style="color: #0000BB">4</span><span style="color: #007700">, </span><span style="color: #0000BB">5</span><span style="color: #007700">];<br /></span><span style="color: #0000BB">$arr6 </span><span style="color: #007700">= [...</span><span style="color: #0000BB">$arr4</span><span style="color: #007700">, ...</span><span style="color: #0000BB">$arr5</span><span style="color: #007700">]; </span><span style="color: #FF8000">// works. [1, 2, 3, 4, 5]<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
    </div>

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

 </div>

 <div class="sect2" id="language.types.array.examples">
  <h3 class="title">Exemples</h3>

  <p class="para">
   Le type tableau en PHP est vraiment polyvalent. Voici quelques exemples :
  </p>

  <div class="example" id="example-23">
   <p><strong>Exemple #23 Versatilité d&#039;un tableau</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">// Ceci<br /></span><span style="color: #0000BB">$a </span><span style="color: #007700">= array( </span><span style="color: #DD0000">'color' </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">'red'</span><span style="color: #007700">,<br />            </span><span style="color: #DD0000">'taste' </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">'sweet'</span><span style="color: #007700">,<br />            </span><span style="color: #DD0000">'shape' </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">'round'</span><span style="color: #007700">,<br />            </span><span style="color: #DD0000">'name'  </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">'apple'</span><span style="color: #007700">,<br />             </span><span style="color: #0000BB">4        </span><span style="color: #FF8000">// la clé sera 0<br />          </span><span style="color: #007700">);<br /><br /></span><span style="color: #0000BB">$b </span><span style="color: #007700">= array(</span><span style="color: #DD0000">'a'</span><span style="color: #007700">, </span><span style="color: #DD0000">'b'</span><span style="color: #007700">, </span><span style="color: #DD0000">'c'</span><span style="color: #007700">);<br /><br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">$a</span><span style="color: #007700">, </span><span style="color: #0000BB">$b</span><span style="color: #007700">);<br /><br /></span><span style="color: #FF8000">// est strictement équivalent à<br /></span><span style="color: #0000BB">$a </span><span style="color: #007700">= array();<br /></span><span style="color: #0000BB">$a</span><span style="color: #007700">[</span><span style="color: #DD0000">'color'</span><span style="color: #007700">] = </span><span style="color: #DD0000">'red'</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$a</span><span style="color: #007700">[</span><span style="color: #DD0000">'taste'</span><span style="color: #007700">] = </span><span style="color: #DD0000">'sweet'</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$a</span><span style="color: #007700">[</span><span style="color: #DD0000">'shape'</span><span style="color: #007700">] = </span><span style="color: #DD0000">'round'</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$a</span><span style="color: #007700">[</span><span style="color: #DD0000">'name'</span><span style="color: #007700">]  = </span><span style="color: #DD0000">'apple'</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$a</span><span style="color: #007700">[]        = </span><span style="color: #0000BB">4</span><span style="color: #007700">;        </span><span style="color: #FF8000">// la clé sera 0<br /><br /></span><span style="color: #0000BB">$b </span><span style="color: #007700">= array();<br /></span><span style="color: #0000BB">$b</span><span style="color: #007700">[] = </span><span style="color: #DD0000">'a'</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$b</span><span style="color: #007700">[] = </span><span style="color: #DD0000">'b'</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$b</span><span style="color: #007700">[] = </span><span style="color: #DD0000">'c'</span><span style="color: #007700">;<br /><br /></span><span style="color: #FF8000">// Après exécution du code ci-dessus, $a sera le tableau<br />// array('color' =&gt; 'red', 'taste' =&gt; 'sweet', 'shape' =&gt; 'round',<br />// 'name' =&gt; 'apple', 0 =&gt; 4), et $b sera le tableau<br />// array(0 =&gt; 'a', 1 =&gt; 'b', 2 =&gt; 'c'), ou simplement array('a', 'b', 'c').<br /><br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">$a</span><span style="color: #007700">, </span><span style="color: #0000BB">$b</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
   </div>

  </div>

  <div class="example" id="example-24">
   <p><strong>Exemple #24 Utilisation de array()</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">// Tableau comme carte de propriétés<br /></span><span style="color: #0000BB">$map </span><span style="color: #007700">= array( </span><span style="color: #DD0000">'version'    </span><span style="color: #007700">=&gt; </span><span style="color: #0000BB">4</span><span style="color: #007700">,<br />              </span><span style="color: #DD0000">'OS'         </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">'Linux'</span><span style="color: #007700">,<br />              </span><span style="color: #DD0000">'lang'       </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">'english'</span><span style="color: #007700">,<br />              </span><span style="color: #DD0000">'short_tags' </span><span style="color: #007700">=&gt; </span><span style="color: #0000BB">true<br />            </span><span style="color: #007700">);<br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">$map</span><span style="color: #007700">);<br /><br /></span><span style="color: #FF8000">// clés numériques strictes<br />// est identique à array(0 =&gt; 7, 1 =&gt; 8, ...)<br /></span><span style="color: #0000BB">$array </span><span style="color: #007700">= array( </span><span style="color: #0000BB">7</span><span style="color: #007700">,<br />                </span><span style="color: #0000BB">8</span><span style="color: #007700">,<br />                </span><span style="color: #0000BB">0</span><span style="color: #007700">,<br />                </span><span style="color: #0000BB">156</span><span style="color: #007700">,<br />                -</span><span style="color: #0000BB">10<br />              </span><span style="color: #007700">);<br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">$array</span><span style="color: #007700">);<br /><br /></span><span style="color: #0000BB">$switching </span><span style="color: #007700">= array(         </span><span style="color: #0000BB">10</span><span style="color: #007700">, </span><span style="color: #FF8000">// clé = 0<br />                    </span><span style="color: #0000BB">5    </span><span style="color: #007700">=&gt;  </span><span style="color: #0000BB">6</span><span style="color: #007700">,<br />                    </span><span style="color: #0000BB">3    </span><span style="color: #007700">=&gt;  </span><span style="color: #0000BB">7</span><span style="color: #007700">, <br />                    </span><span style="color: #DD0000">'a'  </span><span style="color: #007700">=&gt;  </span><span style="color: #0000BB">4</span><span style="color: #007700">,<br />                            </span><span style="color: #0000BB">11</span><span style="color: #007700">, </span><span style="color: #FF8000">// clé = 6 (l'indice entier maximal est 5)<br />                    </span><span style="color: #DD0000">'8'  </span><span style="color: #007700">=&gt;  </span><span style="color: #0000BB">2</span><span style="color: #007700">, </span><span style="color: #FF8000">// clé = 8 (entier !)<br />                    </span><span style="color: #DD0000">'02' </span><span style="color: #007700">=&gt; </span><span style="color: #0000BB">77</span><span style="color: #007700">, </span><span style="color: #FF8000">// clé = '02'<br />                    </span><span style="color: #0000BB">0    </span><span style="color: #007700">=&gt; </span><span style="color: #0000BB">12  </span><span style="color: #FF8000">// la valeur 10 sera écrasée par la valeur 12<br />                  </span><span style="color: #007700">);<br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">$switching</span><span style="color: #007700">);<br /><br /></span><span style="color: #FF8000">// tableau vide<br /></span><span style="color: #0000BB">$empty </span><span style="color: #007700">= array();<br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">$empty</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
   </div>

  </div>

  <div class="example" id="language.types.array.examples.loop">
   <p><strong>Exemple #25 Collection</strong></p>
   <div class="example-contents">
<div class="annotation-interactive phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$colors </span><span style="color: #007700">= array(</span><span style="color: #DD0000">'rouge'</span><span style="color: #007700">, </span><span style="color: #DD0000">'bleu'</span><span style="color: #007700">, </span><span style="color: #DD0000">'verte'</span><span style="color: #007700">, </span><span style="color: #DD0000">'jaune'</span><span style="color: #007700">);<br /><br />foreach (</span><span style="color: #0000BB">$colors </span><span style="color: #007700">as </span><span style="color: #0000BB">$color</span><span style="color: #007700">) {<br />    echo </span><span style="color: #DD0000">"Aimez-vous la couleur </span><span style="color: #0000BB">$color</span><span style="color: #DD0000"> ?\n"</span><span style="color: #007700">;<br />}<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 cdata"><pre>
Aimez-vous la couleur rouge ?
Aimez-vous la couleur bleu ?
Aimez-vous la couleur verte ?
Aimez-vous la couleur jaune ?
</pre></div>
   </div>
  </div>

  <p class="para">
   La modification directe de valeurs d&#039;un <span class="type"><a href="language.types.array.php" class="type array">array</a></span> est possible
   en le passant par référence.
  </p>

  <div class="example" id="language.types.array.examples.changeloop">
   <p><strong>Exemple #26 Modification d&#039;un élément dans la boucle</strong></p>
   <div class="example-contents">
<div class="annotation-interactive phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$colors </span><span style="color: #007700">= array(</span><span style="color: #DD0000">'rouge'</span><span style="color: #007700">, </span><span style="color: #DD0000">'bleu'</span><span style="color: #007700">, </span><span style="color: #DD0000">'verte'</span><span style="color: #007700">, </span><span style="color: #DD0000">'jaune'</span><span style="color: #007700">);<br /><br />foreach (</span><span style="color: #0000BB">$colors </span><span style="color: #007700">as &amp;</span><span style="color: #0000BB">$color</span><span style="color: #007700">) {<br />    </span><span style="color: #0000BB">$color </span><span style="color: #007700">= </span><span style="color: #0000BB">mb_strtoupper</span><span style="color: #007700">(</span><span style="color: #0000BB">$color</span><span style="color: #007700">);<br />}<br />unset(</span><span style="color: #0000BB">$color</span><span style="color: #007700">); </span><span style="color: #FF8000">/* On s'assure que les écritures suivantes<br />sur $color ne modifient pas le dernier élément du tableau */<br /><br /></span><span style="color: #0000BB">print_r</span><span style="color: #007700">(</span><span style="color: #0000BB">$colors</span><span style="color: #007700">);<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 cdata"><pre>
Array
(
    [0] =&gt; ROUGE
    [1] =&gt; BLEU
    [2] =&gt; VERTE
    [3] =&gt; JAUNE
)
</pre></div>
   </div>
  </div>

  <p class="para">
   Cet exemple crée un tableau, dont l&#039;indexation commence à 1.
  </p>

  <div class="example" id="example-25">
   <p><strong>Exemple #27 Indexation commençant à 1</strong></p>
   <div class="example-contents">
<div class="annotation-interactive phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$firstquarter </span><span style="color: #007700">= array(</span><span style="color: #0000BB">1 </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">'Janvier'</span><span style="color: #007700">, </span><span style="color: #DD0000">'Février'</span><span style="color: #007700">, </span><span style="color: #DD0000">'Mars'</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">print_r</span><span style="color: #007700">(</span><span style="color: #0000BB">$firstquarter</span><span style="color: #007700">);<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 cdata"><pre>
Array
(
    [1] =&gt; Janvier
    [2] =&gt; Février
    [3] =&gt; Mars
)
</pre></div>
   </div>
  </div>

  <div class="example" id="example-26">
   <p><strong>Exemple #28 Remplissage d&#039;un tableau</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">// Remplit un tableau avec tous les éléments d'un dossier<br /></span><span style="color: #0000BB">$handle </span><span style="color: #007700">= </span><span style="color: #0000BB">opendir</span><span style="color: #007700">(</span><span style="color: #DD0000">'.'</span><span style="color: #007700">);<br />while (</span><span style="color: #0000BB">false </span><span style="color: #007700">!== (</span><span style="color: #0000BB">$file </span><span style="color: #007700">= </span><span style="color: #0000BB">readdir</span><span style="color: #007700">(</span><span style="color: #0000BB">$handle</span><span style="color: #007700">))) {<br />    </span><span style="color: #0000BB">$files</span><span style="color: #007700">[] = </span><span style="color: #0000BB">$file</span><span style="color: #007700">;<br />}<br /></span><span style="color: #0000BB">closedir</span><span style="color: #007700">(</span><span style="color: #0000BB">$handle</span><span style="color: #007700">);<br /><br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">$files</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
   </div>

  </div>

  <p class="para">
   Les tableaux sont ordonnés. L&#039;ordre peut être modifié en utilisant plusieurs
   fonctions. Voir la section sur les <a href="ref.array.php" class="link">fonctions sur les
   tableaux</a> pour plus d&#039;informations. La fonction <span class="function"><a href="function.count.php" class="function">count()</a></span>
   peut être utilisée pour compter le nombre d&#039;éléments d&#039;un tableau.
  </p>

  <div class="example" id="example-27">
   <p><strong>Exemple #29 Tri d&#039;un tableau</strong></p>
   <div class="example-contents">
<div class="annotation-non-interactive phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />sort</span><span style="color: #007700">(</span><span style="color: #0000BB">$files</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">print_r</span><span style="color: #007700">(</span><span style="color: #0000BB">$files</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
   </div>

  </div>

  <p class="para">
   Sachant que la valeur d&#039;un tableau peut être n&#039;importe quoi, elle peut
   aussi être un autre tableau. Ceci permet la création de tableaux récursifs
   et de tableaux multidimensionnels.
  </p>

  <div class="example" id="example-28">
   <p><strong>Exemple #30 Tableaux récursifs et multidimensionnels</strong></p>
   <div class="example-contents">
<div class="annotation-interactive phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$fruits </span><span style="color: #007700">= array ( </span><span style="color: #DD0000">"fruits"  </span><span style="color: #007700">=&gt; array ( </span><span style="color: #DD0000">"a" </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">"orange"</span><span style="color: #007700">,<br />                                       </span><span style="color: #DD0000">"b" </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">"banana"</span><span style="color: #007700">,<br />                                       </span><span style="color: #DD0000">"c" </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">"apple"<br />                                     </span><span style="color: #007700">),<br />                  </span><span style="color: #DD0000">"numbers" </span><span style="color: #007700">=&gt; array ( </span><span style="color: #0000BB">1</span><span style="color: #007700">,<br />                                       </span><span style="color: #0000BB">2</span><span style="color: #007700">,<br />                                       </span><span style="color: #0000BB">3</span><span style="color: #007700">,<br />                                       </span><span style="color: #0000BB">4</span><span style="color: #007700">,<br />                                       </span><span style="color: #0000BB">5</span><span style="color: #007700">,<br />                                       </span><span style="color: #0000BB">6<br />                                     </span><span style="color: #007700">),<br />                  </span><span style="color: #DD0000">"holes"   </span><span style="color: #007700">=&gt; array (      </span><span style="color: #DD0000">"first"</span><span style="color: #007700">,<br />                                       </span><span style="color: #0000BB">5 </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">"second"</span><span style="color: #007700">,<br />                                            </span><span style="color: #DD0000">"third"<br />                                     </span><span style="color: #007700">)<br />                );<br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">$fruits</span><span style="color: #007700">);<br /><br /></span><span style="color: #FF8000">// Quelques exemples pour retrouver les valeurs dans le tableau ci-dessus <br /></span><span style="color: #007700">echo </span><span style="color: #0000BB">$fruits</span><span style="color: #007700">[</span><span style="color: #DD0000">"holes"</span><span style="color: #007700">][</span><span style="color: #0000BB">5</span><span style="color: #007700">];    </span><span style="color: #FF8000">// affiche "second"<br /></span><span style="color: #007700">echo </span><span style="color: #0000BB">$fruits</span><span style="color: #007700">[</span><span style="color: #DD0000">"fruits"</span><span style="color: #007700">][</span><span style="color: #DD0000">"a"</span><span style="color: #007700">]; </span><span style="color: #FF8000">// affiche "orange"<br /></span><span style="color: #007700">unset(</span><span style="color: #0000BB">$fruits</span><span style="color: #007700">[</span><span style="color: #DD0000">"holes"</span><span style="color: #007700">][</span><span style="color: #0000BB">0</span><span style="color: #007700">]);  </span><span style="color: #FF8000">// efface "first"<br /><br />// Création d'un tableau multidimensionnel<br /></span><span style="color: #0000BB">$juices</span><span style="color: #007700">[</span><span style="color: #DD0000">"apple"</span><span style="color: #007700">][</span><span style="color: #DD0000">"green"</span><span style="color: #007700">] = </span><span style="color: #DD0000">"good"</span><span style="color: #007700">; <br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">$juices</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
   </div>

  </div>

  <p class="para">
   L&#039;assignation d&#039;un tableau induit toujours la copie des valeurs.
   Utiliser l&#039;<a href="language.operators.php" class="link">opérateur de référence</a>
   pour copier un tableau par référence.
  </p>

  <div class="example" id="example-29">
   <p><strong>Exemple #31 Copier des tableaux</strong></p>
   <div class="example-contents">
<div class="annotation-interactive phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$arr1 </span><span style="color: #007700">= array(</span><span style="color: #0000BB">2</span><span style="color: #007700">, </span><span style="color: #0000BB">3</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">$arr2 </span><span style="color: #007700">= </span><span style="color: #0000BB">$arr1</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$arr2</span><span style="color: #007700">[] = </span><span style="color: #0000BB">4</span><span style="color: #007700">; </span><span style="color: #FF8000">// $arr2 est modifié,<br />             // $arr1 vaut toujours array(2, 3)<br /><br /></span><span style="color: #0000BB">$arr3 </span><span style="color: #007700">= &amp;</span><span style="color: #0000BB">$arr1</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$arr3</span><span style="color: #007700">[] = </span><span style="color: #0000BB">4</span><span style="color: #007700">; </span><span style="color: #FF8000">// maintenant, $arr1 et $arr3 sont identiques<br /><br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">$arr1</span><span style="color: #007700">, </span><span style="color: #0000BB">$arr2</span><span style="color: #007700">, </span><span style="color: #0000BB">$arr3</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
   </div>

  </div>

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