cvs: phpdoc-fr /language/types array.xml string.xml
| From: | Damien Seguy | Date: | Thu, 01 Jan 2009 10:11:02 +0000 |
| Subject: | cvs: phpdoc-fr /language/types array.xml string.xml | ||
| Groups: | php.doc.fr | ||
| Request: | Send a blank email to doc-fr+get-6224@lists.php.net to get a copy of this message | ||
dams Thu Jan 1 10:11:02 2009 UTC
Modified files:
/phpdoc-fr/language/types string.xml array.xml
Log:
synch with en
http://cvs.php.net/viewvc.cgi/phpdoc-fr/language/types/string.xml?r1=1.5&r2=1.6&diff_format=u Index: phpdoc-fr/language/types/string.xml diff -u phpdoc-fr/language/types/string.xml:1.5 phpdoc-fr/language/types/string.xml:1.6 --- phpdoc-fr/language/types/string.xml:1.5 Sat Jun 21 09:00:20 2008 +++ phpdoc-fr/language/types/string.xml Thu Jan 1 10:11:02 2009 @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="iso-8859-1"?> -<!-- $Revision: 1.5 $ --> -<!-- EN-Revision: 1.10 Maintainer: yannick Status: ready --> -<!-- Reviewed: no --> +<!-- $Revision: 1.6 $ --> +<!-- EN-Revision: 1.16 Maintainer: yannick Status: ready --> +<!-- Reviewed: yes --> <sect1 xml:id="language.types.string"> <title>Les chaînes de caractères</title> @@ -9,7 +9,7 @@ <para> Une &string; est une série de caractères. Avant PHP 6, un caractère est la même chose qu'un octet. Ainsi, il y a exactement 256 caractères différents. - Ceci impliquait également que PHP n'avait pas de support natif pour l'unicode. + Ceci impliquait également que PHP n'avait pas de support natif pour l'Unicode. Voir les fonctions <function>utf8_encode</function> et <function>utf8_decode</function> pour des fonctionnalités Unicode basiques. </para> @@ -32,22 +32,22 @@ <itemizedlist> <listitem> <simpara> - <link linkend="language.types.string.syntax.single">Entourée de simple guillemet</link> + <link linkend="language.types.string.syntax.single">Entourée de guillemets simples</link> </simpara> </listitem> <listitem> <simpara> - <link linkend="language.types.string.syntax.double">Entourée de guillemet double</link> + <link linkend="language.types.string.syntax.double">Entourée de guillemets doubles</link> </simpara> </listitem> <listitem> <simpara> - <link linkend="language.types.string.syntax.heredoc">syntaxe heredoc</link> + <link linkend="language.types.string.syntax.heredoc">syntaxe Heredoc</link> </simpara> </listitem> <listitem> <simpara> - <link linkend="language.types.string.syntax.nowdoc">syntax nowdoc</link> + <link linkend="language.types.string.syntax.nowdoc">syntaxe Nowdoc</link> (depuis PHP 5.3.0) </simpara> </listitem> @@ -219,7 +219,7 @@ <emphasis>ne doit pas être indenté</emphasis>, et il ne doit y avoir aucun espace ou tabulation avant ou après le point-virgule. Il est également important de garder à l'esprit que le premier caractère avant l'identifiant de fermeture - doit être une nouvelle ligne sur les systèmes Unix, incluant Max OS X. + doit être une nouvelle ligne sur les systèmes Unix, incluant Mac OSX. Le délimiteur de fermeture (pouvant être suivi d'un point-virgule) doit aussi être suivi d'une nouvelle ligne. </simpara> @@ -233,9 +233,9 @@ </simpara> <para> - Heredocs ne peut être utilisé pour initialiser les membres d'une classe. + Heredoc ne peut être utilisé pour initialiser les membres d'une classe. Utilisez la syntaxe - <link linkend="language.types.string.syntax.nowdoc">nowdocs</link> à la place. + <link linkend="language.types.string.syntax.nowdoc">Nowdoc</link> à la place. </para> <example> @@ -271,7 +271,7 @@ $str = <<<EOD Exemple de chaîne sur plusieurs lignes -en utilisant la syntaxe heredoc. +en utilisant la syntaxe Heredoc. EOD; /* Exemple plus complexe, avec des variables. */ @@ -304,8 +304,29 @@ <![CDATA[ Mon nom est "MyName". J'affiche quelques Foo. Maintenant, j'affiche quelques Bar2. -Et ceci devrait afficher un 'A': A -]]></screen> +Et ceci devrait afficher un 'A' majuscule : A +]]> + </screen> + + <para> + Il est aussi possible d'utiliser la syntaxe Heredoc + pour passer des arguments à une fonction : + </para> + + <example> + <title>Exemple d'utilisation de Heredoc pour passer des arguments</title> + <programlisting role="php"> +<![CDATA[ +<?php +var_dump(array(<<<EOD +foobar! +EOD +)); +?> +]]> + </programlisting> + </example> + <note> <para> Le support de la syntaxe Heredoc a été ajouté en PHP 4. @@ -316,10 +337,10 @@ <sect3 xml:id="language.types.string.syntax.nowdoc"> <title>Nowdoc</title> <para> - Nowdocs est aux chaînes entourées de guillemet simple ce qu'heredocs est - aux chaînes entourées de guillemet double. nowdoc est spécifié de manière - similaire à heredoc, mut <emphasis>aucune analyse n'est effectuée</emphasis> - dans une syntaxe nowdoc. La construction est idéale pour embarquer du code PHP + Nowdoc est aux chaînes entourées de guillemet simple ce qu'Heredoc est + aux chaînes entourées de guillemet double. Nowdoc est spécifié de manière + similaire à Heredoc, mut <emphasis>aucune analyse n'est effectuée</emphasis> + dans une syntaxe Nowdoc. La construction est idéale pour embarquer du code PHP ou d'autres larges blocs de texte, sans avoir besoin d'échapper quoi que ce soit. Cette syntaxe partage les mêmes fonctionnalités que le constructeur SGML <literal><![CDATA[ ]]></literal>, en ce qu'elle déclare un bloc de texte @@ -328,9 +349,9 @@ <para> Nowdoc est identifié avec la même séquence <literal><<<</literal> - utilisée par heredocs, mais l'identifiant qui suit est entouré de guillemet + utilisée par Heredoc, mais l'identifiant qui suit est entouré de guillemet simple,e.g. <literal><<<'EOT'</literal>. Toutes les règles concernant - les identifiants heredoc sont également appliquer aux identifiants nowdoc, + les identifiants Heredoc sont également appliquer aux identifiants Nowdoc, et tout spécialement, celles concernant l'apparence de l'identifiant. </para> @@ -342,7 +363,7 @@ $str = <<<'EOD' Exemple de chaîne sur plusieurs lignes -en utilisant la syntaxe nowdoc. +en utilisant la syntaxe Nowdoc. EOD; /* Exemple complexe, avec des variables. */ @@ -379,7 +400,7 @@ <note> <para> - Contrairement à heredocs, nowdocs peut être utilisé dans n'importe quel contexte + Contrairement à Heredoc, NowDoc peut être utilisé dans n'importe quel contexte de données statiques. L'exemple typique est l'initialisation de membres ou de constantes de classe : </para> @@ -412,7 +433,7 @@ <title>Analyse des variables</title> <simpara> - Lorsqu'une &string; est spécifié en guillemet double ou en heredoc, + Lorsqu'une &string; est spécifié en guillemet double ou en Heredoc, les <link linkend="language.variables">variables</link> sont analysées. </simpara> @@ -446,7 +467,7 @@ <?php $beer = 'Heineken'; echo "$beer's taste is great"; // fonctionne ; "'" est un caractère invalide pour les noms de variable -echo "He drank some $beers"; // ne fonctionne pas ; 's' est un caractère valide pour les noms de variable +echo "He drank some $beers"; // ne fonctionne pas ; 's' est un caractère valide dans un nom de variable et la variable est en fait "$beer" echo "He drank some ${beer}s"; // fonctionne echo "He drank some {$beer}s"; // fonctionne ?> @@ -598,6 +619,19 @@ </simpara> </note> + <warning> + <simpara> + Écrire à une position hors de l'intervalle de l'existant fait que + la chaîne est complétée par des espaces jusqu'à cette position. + Les positions sont toujours converties en valeur entière. + Les positions invalides produisent une alerte <constant>E_NOTICE</constant>. + Les positions négatives produisent une alerte <constant>E_NOTICE</constant> + en écriture, mais lisent une chaîne vide. + Seul le premier caractère d'une chaîne assignée est utilisée. + Assigner une chaîne vide assigne le caractère NUL. + </simpara> + </warning> + <example> <title>Quelques exemples de chaînes</title> <programlisting role="php"> http://cvs.php.net/viewvc.cgi/phpdoc-fr/language/types/array.xml?r1=1.5&r2=1.6&diff_format=u Index: phpdoc-fr/language/types/array.xml diff -u phpdoc-fr/language/types/array.xml:1.5 phpdoc-fr/language/types/array.xml:1.6 --- phpdoc-fr/language/types/array.xml:1.5 Wed Jun 18 16:17:00 2008 +++ phpdoc-fr/language/types/array.xml Thu Jan 1 10:11:02 2009 @@ -1,24 +1,24 @@ -<?xml version="1.0" encoding="iso-8859-1"?> -<!-- $Revision: 1.5 $ --> -<!-- EN-Revision: 1.4 Maintainer: yannick Status: ready --> -<!-- Reviewed: no --> +<?xml version="1.0" encoding="utf-8"?> +<!-- $Revision: 1.6 $ --> +<!-- EN-Revision: 1.7 Maintainer: yannick Status: ready --> +<!-- Reviewed: yes --> <sect1 xml:id="language.types.array"> <title>Les tableaux</title> <para> - Un tableau en PHP est actuellement une carte ordonnée. Une carte est un type - qui associe des <emphasis>valeurs</emphasis> en <emphasis>clés</emphasis>. - Ce type est optimisé pour différentes utilisations ; il peut être considéré + Un tableau en PHP est actuellement une carte ordonnée. Une carte est un type + qui associe des <emphasis>valeurs</emphasis> en <emphasis>clés</emphasis>. + Ce type est optimisé pour différentes utilisations ; il peut être considéré comme un tableau, une liste, une table de hashage, un dictionnaire, une collection, une pile, une file d'attente et probablement plus. On peut avoir, - comme valeur d'un tableau, d'autres tableaux, multi-dimensionnels ou non. + comme valeur d'un tableau, d'autres tableaux, multidimensionnels ou non. </para> <para> - La structure de ces données dépasse l'objet de ce manuel, mais vous trouverez - au moins un exemple pour chacun des cas évoqués. Pour plus d'informations, - reportez-vous aux différentes explications sur le sujet que l'on trouve + La structure de ces données dépasse l'objet de ce manuel, mais vous trouverez + au moins un exemple pour chacun des cas évoqués. Pour plus d'informations, + reportez-vous aux différentes explications sur le sujet que l'on trouve sur le web. </para> @@ -29,19 +29,19 @@ <title>Syntaxe d'un tableau</title> <para> - Un tableau peut être créé avec le constructeur de langage - <function>array</function>. Il prend un nombre illimité de paramètres, - chacun séparé par une virgule, sous la forme d'une paire - <literal><replaceable>clé</replaceable> => + Un tableau peut être créé avec le constructeur de langage + <function>array</function>. Il prend un nombre illimité de paramètres, + chacun séparé par une virgule, sous la forme d'une paire + <literal><replaceable>clé</replaceable> => <replaceable>valeur</replaceable></literal>. </para> <synopsis> -array( <optional> <replaceable>clé</replaceable> => </optional> <replaceable>valeur</replaceable> +array( <optional> <replaceable>clé</replaceable> => </optional> <replaceable>valeur</replaceable> , ... ) -// <replaceable>clé</replaceable> ne peut être qu'un &integer; ou une &string; -// <replaceable>valeur</replaceable> peut être de n'importe quel type</synopsis> +// <replaceable>clé</replaceable> ne peut être qu'un &integer; ou une &string; +// <replaceable>valeur</replaceable> peut être de n'importe quel type</synopsis> <!-- Do not fix the whitespace for the synopsis end element. A limitation of PhD prevents proper trimming --> <informalexample> @@ -58,17 +58,17 @@ </informalexample> <para> - Une <varname>clé</varname> peut être soit un &integer;, soit une &string;. - Si une clé est une représentation standard d'un &integer;, elle sera interprétée - comme telle (i.e. <literal>"8"</literal> sera interprété comme <literal>8</literal>, - alors que <literal>"08"</literal> sera interprétée comme <literal>"08"</literal>). - Les nombres à virgule flottante, en tant que clé, seront tronqués en &integer;. - Les tableaux indexés ou associatifs, en PHP, sont du même type ; ils peuvent + Une <varname>clé</varname> peut être soit un &integer;, soit une &string;. + Si une clé est une représentation standard d'un &integer;, elle sera interprétée + comme telle (i.e. <literal>"8"</literal> sera interprété comme <literal>8</literal>, + alors que <literal>"08"</literal> sera interprétée comme <literal>"08"</literal>). + Les nombres à virgule flottante, en tant que clé, seront tronqués en &integer;. + Les tableaux indexés ou associatifs, en PHP, sont du même type ; ils peuvent ainsi contenir des indices sous la forme d'&integer; et de &string;. </para> <para> - Une valeur peut être de n'importe quel type PHP. + Une valeur peut être de n'importe quel type PHP. </para> <informalexample> @@ -86,16 +86,16 @@ </informalexample> <para> - Si une clé n'est pas spécifiée pour une valeur, l'indice &integer; maximal - sera pris et la nouvelle clé sera cette valeur, plus 1. Si une clé contient - déjà une valeur associée, cette valeur sera écrasée. + Si une clé n'est pas spécifiée pour une valeur, l'indice &integer; maximal + sera pris et la nouvelle clé sera cette valeur, plus 1. Si une clé contient + déjà une valeur associée, cette valeur sera écrasée. </para> <informalexample> <programlisting role="php"> <![CDATA[ <?php -// Ce tableau est identique à ... +// Ce tableau est identique à ... array(5 => 43, 32, 56, "b" => 12); // ...ce tableau @@ -107,52 +107,52 @@ <warning> <simpara> - Avant PHP 4.3.0, le fait d'ajouter à un tableau une valeur, dont la précédent - clé est négative, reproduisait le comportement ci-dessus. Depuis PHP 4.3.0, la - nouvelle clé sera <literal>0</literal>. + Avant PHP 4.3.0, le fait d'ajouter à un tableau une valeur, dont la précédent + clé est négative, reproduisait le comportement ci-dessus. Depuis PHP 4.3.0, la + nouvelle clé sera <literal>0</literal>. </simpara> </warning> <para> - Utiliser &true; comme <varname>clé</varname> sera évalué à l'&integer; <literal>1</literal>. - Utiliser &false; comme <varname>clé</varname> sera évalué à l'&integer; <literal>0</literal>. - Utiliser &null; comme clé sera évalué à une &string; vide. - Utiliser une &string; vide comme clé créera une clé (ou l'écrasera) vide et sa valeur - ne sera <emphasis>pas</emphasis> la même si on utilise des parenthèses vides. + Utiliser &true; comme <varname>clé</varname> sera évalué à l'&integer; <literal>1</literal>. + Utiliser &false; comme <varname>clé</varname> sera évalué à l'&integer; <literal>0</literal>. + Utiliser &null; comme clé sera évalué à une &string; vide. + Utiliser une &string; vide comme clé créera une clé (ou l'écrasera) vide et sa valeur + ne sera <emphasis>pas</emphasis> la même si on utilise des parenthèses vides. </para> <para> - Les tableaux et les objets ne peuvent être utilisés comme clés. Si vous tentez de le faire, - une message de type Alerte sera émis : <literal>Illegal offset type</literal>. + Les tableaux et les objets ne peuvent être utilisés comme clés. Si vous tentez de le faire, + une message de type Alerte sera émis : <literal>Illegal offset type</literal>. </para> </sect3> <sect3 xml:id="language.types.array.syntax.modifying"> - <title>Création/modification avec des crochets</title> + <title>Création/modification avec des crochets</title> <para> - Un tableau existant peut être modifié en y assignant explicitement des valeurs. + Un tableau existant peut être modifié en y assignant explicitement des valeurs. </para> <para> - L'assignation d'une valeur dans un tableau est effectué en spécifiant - la clé, entre crochets. La clé peut également ne pas être renseignée, sous + L'assignation d'une valeur dans un tableau est effectué en spécifiant + la clé, entre crochets. La clé peut également ne pas être renseignée, sous la forme : <literal>[]</literal>. </para> <synopsis> -$arr[<replaceable>clé</replaceable>] = <replaceable>valeur</replaceable>; +$arr[<replaceable>clé</replaceable>] = <replaceable>valeur</replaceable>; $arr[] = <replaceable>valeur</replaceable>; -// <replaceable>clé</replaceable> peut être un &integer; ou une &string; -// <replaceable>valeur</replaceable> peut être n'importe quel type</synopsis> +// <replaceable>clé</replaceable> peut être un &integer; ou une &string; +// <replaceable>valeur</replaceable> peut être n'importe quel type</synopsis> <para> Si <varname>$arr</varname> n'existe pas lors de l'assignation, il sera - créé ; c'est ainsi une façon détournée de créer un tableau. Pour modifier - une valeur en particulier, il convient d'assigner une valeur en spécifiant - sa clé. Pour effacer une paire clé/valeur, il convient d'appeler la fonction - <function>unset</function> sur la clé désirée. + créé ; c'est ainsi une façon détournée de créer un tableau. Pour modifier + une valeur en particulier, il convient d'assigner une valeur en spécifiant + sa clé. Pour effacer une paire clé/valeur, il convient d'appeler la fonction + <function>unset</function> sur la clé désirée. </para> <informalexample> @@ -161,15 +161,15 @@ <?php $arr = array(5 => 1, 12 => 2); -$arr[] = 56; // Identique à $arr[13] = 56; - // à cet endroit du script +$arr[] = 56; // Identique à $arr[13] = 56; + // à cet endroit du script -$arr["x"] = 42; // Ceci ajoute un nouvel élément au - // tableau avec la clé "x" +$arr["x"] = 42; // Ceci ajoute un nouvel élément au + // tableau avec la clé "x" -unset($arr[5]); // Ceci efface l'élément du tableau +unset($arr[5]); // Ceci efface l'élément du tableau -unset($arr); // Ceci efface complètement le tableau +unset($arr); // Ceci efface complètement le tableau ?> ]]> </programlisting> @@ -177,17 +177,17 @@ <note> <para> - Comme dit plus haut, si aucune clé n'est spécifiée, l'indice maximal - existant est repris, et la nouvelle clé sera ce nombre, plus 1. Si - aucun indice entier n'existe, la clé sera <literal>0</literal> (zéro). - Si une clé existe, sa valeur sera écrasée. + Comme dit plus haut, si aucune clé n'est spécifiée, l'indice maximal + existant est repris, et la nouvelle clé sera ce nombre, plus 1. Si + aucun indice entier n'existe, la clé sera <literal>0</literal> (zéro). + Si une clé existe, sa valeur sera écrasée. </para> <para> - Notez que la clé entière maximale pour cette opération <emphasis>n'a + Notez que la clé entière maximale pour cette opération <emphasis>n'a pas besoin d'exister dans le tableau au moment de la manipulation</emphasis>. - 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é. + 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 : </para> @@ -195,21 +195,21 @@ <programlisting role="php"> <![CDATA[ <?php -// Création d'un tableau simple. +// Création d'un tableau simple. $array = array(1, 2, 3, 4, 5); print_r($array); -// Maintennant, on efface tous les éléments, mais on concerne le tableau : +// Maintennant, on efface tous les éléments, mais on concerne le tableau : foreach ($array as $i => $value) { unset($array[$i]); } print_r($array); -// Ajout d'un élément (notez que la nouvelle clé est 5, et non 0). +// Ajout d'un élément (notez que la nouvelle clé est 5, et non 0). $array[] = 6; print_r($array); -// Ré-indexation : +// Ré-indexation : $array = array_values($array); $array[] = 7; print_r($array); @@ -253,15 +253,15 @@ <para> Il y a beaucoup de fonctions utiles pour travailler avec les tableaux. - Nous vous invitons à lire la section de ce manuel sur les + Nous vous invitons à lire la section de ce manuel sur les <link linkend="ref.array">fonctions</link> en rapport avec les tableaux. </para> <note> <para> - La fonction <function>unset</function> permet d'effacer les clés d'un tableau. + La fonction <function>unset</function> permet d'effacer les clés d'un tableau. Soyez attentif sur le fait que le tableau ne sera <emphasis>pas</emphasis> - ré-indexé. Si vous voulez réaliser un effacement complet et une ré-indexation + ré-indexé. Si vous voulez réaliser un effacement complet et une ré-indexation de votre tableau, vous devez utiliser la fonction <function>array_values</function>. </para> @@ -287,8 +287,8 @@ </note> <para> - La structure de contrôle <link linkend="control-structures.foreach">foreach</link> - existe tout spécialement pour les tableaux. Elle fournit une façon pratique + La structure de contrôle <link linkend="control-structures.foreach">foreach</link> + existe tout spécialement pour les tableaux. Elle fournit une manière pratique de parcourir un tableau. </para> </sect2> @@ -300,7 +300,7 @@ <title>Pourquoi <literal>$foo[bar]</literal> est incorrect ?</title> <para> - Utiliser toujours des guillemets autour d'un index littéral. Par exemple, + Utiliser toujours des guillemets autour d'un index littéral. Par exemple, <literal>$foo['bar']</literal> est correct, alors que <literal>$foo[bar]</literal> ne l'est pas. Mais pourquoi ? il est courant de rencontrer ce genre de syntaxe dans d'ancien script : @@ -319,22 +319,22 @@ </informalexample> <para> - C'est incorrect, mais ça fonctionne. La raison est que ce code a une constante - indéfinie (bar) plutôt qu'une chaîne ('bar' - noter les guillemets). PHP - peut définir plus loin une constante portant le même nom. - Cela fonctionne car PHP convertit automatiquement une <emphasis>chaîne nue</emphasis> - (une chaîne sans guillemets qui ne correspond à aucun symbole connu) en une chaîne - qui la contient. Actuellement, s'il n'y a aucune constante nommée <constant>bar</constant>, - alors PHP substituera <literal>'bar'</literal> dans la chaîne et l'utilisera. + C'est incorrect, mais ça fonctionne. La raison est que ce code a une constante + indéfinie (bar) plutôt qu'une chaîne ('bar' - noter les guillemets). PHP + peut définir plus loin une constante portant le même nom. + Cela fonctionne car PHP convertit automatiquement une <emphasis>chaîne nue</emphasis> + (une chaîne sans guillemets qui ne correspond à aucun symbole connu) en une chaîne + qui la contient. Actuellement, s'il n'y a aucune constante nommée <constant>bar</constant>, + alors PHP substituera <literal>'bar'</literal> dans la chaîne et l'utilisera. </para> <note> <simpara> - Ceci ne signifie pas qu'il faut <emphasis>toujours</emphasis> mettre la clé entre guillemets. - N'utilisez pas de guillemets avec les clés qui sont des + Ceci ne signifie pas qu'il faut <emphasis>toujours</emphasis> mettre la clé entre guillemets. + N'utilisez pas de guillemets avec les clés qui sont des <link linkend="language.constants">constantes</link> ou des - <link linkend="language.variables">variables</link>, car cela empêcherait PHP de - les interpréter. + <link linkend="language.variables">variables</link>, car cela empêcherait PHP de + les interpréter. </simpara> <informalexample> @@ -348,7 +348,7 @@ $array = array(1, 2); $count = count($array); for ($i = 0; $i < $count; $i++) { - echo "\nVérification de $i : \n"; + echo "\nVérification de $i : \n"; echo "Mauvais : " . $array['$i'] . "\n"; echo "Bon : " . $array[$i] . "\n"; echo "Mauvais : {$array['$i']}\n"; @@ -361,7 +361,7 @@ &example.outputs; <screen> <![CDATA[ -Vérification de 0 : +Vérification de 0 : Notice: Undefined index: $i in /path/to/script.html on line 9 Mauvais : Bon : 1 @@ -369,7 +369,7 @@ Mauvais : Bon : 1 -Vérification de 1 : +Vérification de 1 : Notice: Undefined index: $i in /path/to/script.html on line 9 Mauvais : Bon : 2 @@ -397,36 +397,36 @@ print $arr['fruit']; // apple print $arr['veggie']; // carrot -// Incorrect. Ceci fonctionne mais PHP émettera une erreur de type E_NOTICE car -// on utilise la constante nommée fruit qui est indéfinie +// Incorrect. Ceci fonctionne mais PHP émettera une erreur de type E_NOTICE car +// on utilise la constante nommée fruit qui est indéfinie // // Notice: Use of undefined constant fruit - assumed 'fruit' in... print $arr[fruit]; // apple -// Ceci définit une constante pour expliquer ce qu'il ne va pas. La valeur 'veggie' -// est assignée à la constante nommée fruit. +// Ceci définit une constante pour expliquer ce qu'il ne va pas. La valeur 'veggie' +// est assignée à la constante nommée fruit. define('fruit', 'veggie'); -// Noter la différence maintenant +// Noter la différence maintenant print $arr['fruit']; // apple print $arr[fruit]; // carrot -// Ce qui squit est correct, car c'est dans une chaîne. Les constantes ne sont pas recherchées -// dans les chaînes, et donc, aucune alerte E_NOTICE ne sera émise +// Ce qui squit est correct, car c'est dans une chaîne. Les constantes ne sont pas recherchées +// dans les chaînes, et donc, aucune alerte E_NOTICE ne sera émise print "Hello $arr[fruit]"; // Hello apple -// Avec une exception : les parenthèses autour d'un tableau dans une chaîne permettent -// aux constantes d'être interprétées +// Avec une exception : les parenthèses autour d'un tableau dans une chaîne permettent +// aux constantes d'être interprétées print "Hello {$arr[fruit]}"; // Hello carrot print "Hello {$arr['fruit']}"; // Hello apple -// Ceci ne fonctionnera pas, et en résultera une erreur d'analyse, comme ceci : +// Ceci ne fonctionnera pas, et en résultera une erreur d'analyse, comme ceci : // Parse error: parse error, expecting T_STRING' or T_VARIABLE' or T_NUM_STRING' -// Ceci arrive lors de l'utilisation d'une supergloables dans les chaînes +// Ceci arrive lors de l'utilisation d'une supergloables dans les chaînes print "Hello $arr['fruit']"; print "Hello $_GET['foo']"; -// La concaténation est une autre solution +// La concaténation est une autre solution print "Hello " . $arr['fruit']; // Hello apple ?> ]]> @@ -434,18 +434,18 @@ </informalexample> <para> - Lorsque <link linkend="ini.error-reporting">error_reporting</link> est défini afin - de montrer les erreurs de type <constant>E_NOTICE</constant> (en le définissant à - <constant>E_ALL</constant>, par exemple), une telle pratique devient immédiatement - visible. Par défaut, - <link linkend="ini.error-reporting">error_reporting</link> n'est pas défini pour + Lorsque <link linkend="ini.error-reporting">error_reporting</link> est défini afin + de montrer les erreurs de type <constant>E_NOTICE</constant> (en le définissant à + <constant>E_ALL</constant>, par exemple), une telle pratique devient immédiatement + visible. Par défaut, + <link linkend="ini.error-reporting">error_reporting</link> n'est pas défini pour afficher toutes les alertes. </para> <para> Comme vu dans la section "<link linkend="language.types.array.syntax">syntaxe</link>", ce qui se trouve entre crochets ('<literal>[</literal>' et - '<literal>]</literal>') doit être une expression. Ceci signifie que le code ci-dessous + '<literal>]</literal>') doit être une expression. Ceci signifie que le code ci-dessous fonctionne : </para> @@ -461,7 +461,7 @@ <para> C'est un exemple d'utilisation d'une fonction retournant une valeur qui sera - la clé du tableau. PHP comprend également les constantes : + la clé du tableau. PHP comprend également les constantes : </para> <informalexample> @@ -477,9 +477,9 @@ </informalexample> <para> - Noter que <literal>E_ERROR</literal> est également un identifiant valide, + Noter que <literal>E_ERROR</literal> est également un identifiant valide, tout comme <literal>bar</literal> dans le premier exemple. Mais le dernier - exemple est finalement le même que celui-ci : + exemple est finalement le même que celui-ci : </para> <informalexample> @@ -502,21 +502,21 @@ <title>Alors, pourquoi est-ce une mauvaise pratique ?</title> <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'utiliser + 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'utiliser le mot <literal>empty</literal> et <literal>default</literal>, sachant que ce sont - des <link linkend="reserved">mots réservés</link>. + des <link linkend="reserved">mots réservés</link>. </para> <note> <simpara> - Pour être plus clair, dans une chaîne entourée de guillemets doubles, + Pour être plus clair, dans une chaîne entourée de guillemets doubles, il est valide de ne pas entourer les indexes d'un tableau avec des guillemets, et donc, <literal>"$foo[bar]"</literal> est valide. Voir - les exemples ci-dessous pour plus détails mais aussi la section sur + les exemples ci-dessous pour plus détails mais aussi la section sur l'<link linkend="language.types.string.parsing">analyse des variables - dans les chaînes</link>. + dans les chaînes</link>. </simpara> </note> @@ -529,18 +529,19 @@ <para> Pour tous les types : &integer;, &float;, &string;, &boolean; et &resource;, - le fait de convertir une valeur en un tableau résulte en un tableau contenant - un seul élément dont l'indexe vaut zéro et la valeur, une valeur scalaire convertie. + le fait de convertir une valeur en un tableau résulte en un tableau contenant + un seul élément dont l'indexe vaut zéro et la valeur, une valeur scalaire convertie. En d'autres termes, <literal>(array)$scalarValue</literal> est exactement la - même chose que <literal>array($scalarValue)</literal>. + même chose que <literal>array($scalarValue)</literal>. </para> <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'objet. Les clés sont les noms des membres, - avec une légère exception : les variables privées auront le nom de la classe - ajouté au nom de la variable ; les variables protégées auront un '*' ajouté - au nom de la variable. Ce comportement peut amener à des résultats inattendus : + 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'objet. Les clés sont les noms des membres, + avec une légère exception : les variables ayant un nom sous forme d'entier sont + inaccessible; les variables privées auront le nom de la classe + ajouté au nom de la variable ; les variables protégées auront un '*' ajouté + au nom de la variable. Ce comportement peut amener à des résultats inattendus : </para> <informalexample> @@ -564,12 +565,12 @@ </informalexample> <para> - Ici, on pourrait penser qu'il y a 2 clés nommées 'AA', alors qu'une est - actuellement nommée '\0A\0A'. + Ici, on pourrait penser qu'il y a 2 clés nommées 'AA', alors qu'une est + actuellement nommée '\0A\0A'. </para> <para> - La conversion de &null; en un tableau résultat en un tableau vide. + La conversion de &null; en un tableau résultat en un tableau vide. </para> </sect2> @@ -579,7 +580,7 @@ <para> Il est possible de comparer plusieurs tableaux avec la fonction <function>array_diff</function> ainsi qu'avec les - <link linkend="language.operators.array">opérateurs de tableaux</link>. + <link linkend="language.operators.array">opérateurs de tableaux</link>. </para> </sect2> @@ -594,26 +595,30 @@ <programlisting role="php"> <![CDATA[ <?php -// this +// This $a = array( 'color' => 'red', 'taste' => 'sweet', 'shape' => 'round', 'name' => 'apple', - 4 // la clé devrait être 0 + 4 // la clé sera 0 ); -// est strictement équivalent à +// est strictement équivalent à +$a = array(); $a['color'] = 'red'; $a['taste'] = 'sweet'; $a['shape'] = 'round'; $a['name'] = 'apple'; -$a[] = 4; // la clé devrait être 0 +$a[] = 4; // la clé sera 0 $b[] = 'a'; $b[] = 'b'; $b[] = 'c'; -// le tableau sera array(0 => 'a' , 1 => 'b' , 2 => 'c'), -// ou, simplement, array('a', 'b', 'c') + +// Après exécution du code ci-dessus, $a sera le tableau +// array('color' => 'red', 'taste' => 'sweet', 'shape' => 'round', +// 'name' => 'apple', 0 => 4), et $b sera le tableau +// array(0 => 'a', 1 => 'b', 2 => 'c'), ou simplement array('a', 'b', 'c'). ?> ]]> </programlisting> @@ -624,30 +629,30 @@ <programlisting role="php"> <![CDATA[ <?php -// Tableau comme carte de propriétés +// Tableau comme carte de propriétés $map = array( 'version' => 4, 'OS' => 'Linux', 'lang' => 'english', 'short_tags' => true ); -// clés numériques strictes +// clés numériques strictes $array = array( 7, 8, 0, 156, -10 ); -// est identique à array(0 => 7, 1 => 8, ...) +// est identique à array(0 => 7, 1 => 8, ...) -$switching = array( 10, // clé = 0 +$switching = array( 10, // clé = 0 5 => 6, 3 => 7, 'a' => 4, - 11, // clé = 6 (l'indice entier maximal est 5) - '8' => 2, // clé = 8 (intier !) - '02' => 77, // clé = '02' - 0 => 12 // la valeur 10 sera écrasée par la valeur 12 + 11, // clé = 6 (l'indice entier maximal est 5) + '8' => 2, // clé = 8 (intier !) + '02' => 77, // clé = '02' + 0 => 12 // la valeur 10 sera écrasée par la valeur 12 ); // empty array @@ -684,7 +689,7 @@ <para> La modification directe de valeurs d'un tableau est possible depuis PHP 5 - en le passant par référence. Avant cette version, nous devions utiliser l'astuce + en le passant par référence. Avant cette version, nous devions utiliser l'astuce suivante : </para> @@ -697,8 +702,8 @@ foreach ($colors as &$color) { $color = strtoupper($color); } -unset($color); /* On s'assure que les écritures suivantes -sur $color ne modifie pas le dernier élément du tableau */ +unset($color); /* On s'assure que les écritures suivantes +sur $color ne modifie pas le dernier élément du tableau */ // Astuce pour les anciennes versions foreach ($colors as $key => $color) { @@ -724,15 +729,15 @@ </example> <para> - Cet exemple crée un tableau, dont l'indexation commence à 1. + Cet exemple crée un tableau, dont l'indexation commence à 1. </para> <example> - <title>Indexation commençant à 1</title> + <title>Indexation commençant à 1</title> <programlisting role="php"> <![CDATA[ <?php -$firstquarter = array(1 => 'Janvier', 'Février', 'Mars'); +$firstquarter = array(1 => 'Janvier', 'Février', 'Mars'); print_r($firstquarter); ?> ]]> @@ -743,7 +748,7 @@ Array ( [1] => 'Janvier' - [2] => 'Février' + [2] => 'Février' [3] => 'Mars' ) ]]> @@ -755,7 +760,7 @@ <programlisting role="php"> <![CDATA[ <?php -// Remplit un tableau avec tous les éléments d'un dossier +// Remplit un tableau avec tous les éléments d'un dossier $handle = opendir('.'); while (false !== ($file = readdir($handle))) { $files[] = $file; @@ -767,10 +772,10 @@ </example> <para> - Les tableaux sont ordonnés. L'ordre peut être modifié en utilisant plusieurs + Les tableaux sont ordonnés. L'ordre peut être modifié en utilisant plusieurs fonctions. Voir la section sur les <link linkend="ref.array">fonctions sur les tableaux</link> pour plus d'informations. La fonction <function>count</function> - peut être utilisée pour compter le nombre d'éléments d'un tableau. + peut être utilisée pour compter le nombre d'éléments d'un tableau. </para> <example> @@ -786,13 +791,13 @@ </example> <para> - Sachant que la valeur d'une tableau peut être n'importe quoi, elle peut - aussi être un autre tableau. Ceci permet la création de tableaux récursifs - et de tableaux multi-dimensionnels. + Sachant que la valeur d'une tableau peut être n'importe quoi, elle peut + aussi être un autre tableau. Ceci permet la création de tableaux récursifs + et de tableaux multidimensionnels. </para> <example> - <title>Tableaux récursifs et multi-dimensionnels</title> + <title>Tableaux récursifs et multidimensionnels</title> <programlisting role="php"> <![CDATA[ <?php @@ -818,7 +823,7 @@ echo $fruits["fruits"]["a"]; // affiche "orange" unset($fruits["holes"][0]); // efface "first" -// Création d'un tableau multi-dimensionnel +// Création d'un tableau multi-dimensionnel $juices["apple"]["green"] = "good"; ?> ]]> @@ -827,11 +832,8 @@ <para> L'assignation d'un tableau induit toujours la copie des valeurs. - Cela signifie aussi que le pointeur interne du tableau utilisé - par la fonction <function>current</function> et ces équivalents, - est réinitialisé. Utilisez l' - <link linkend="language.operators">opérateur de référence</link> pour copier - un tableau par référence. + Utilisez l'<link linkend="language.operators">opérateur de référence</link> + pour copier un tableau par référence. </para> <informalexample> @@ -840,7 +842,7 @@ <?php $arr1 = array(2, 3); $arr2 = $arr1; -$arr2[] = 4; // $arr2 est modifié, +$arr2[] = 4; // $arr2 est modifié, // $arr1 vaut toujours array(2, 3) $arr3 = &$arr1;
http://cvs.php.net/viewvc.cgi/phpdoc-fr/language/types/string.xml?r1=1.5&r2=1.6&diff_format=u Index: phpdoc-fr/language/types/string.xml diff -u phpdoc-fr/language/types/string.xml:1.5 phpdoc-fr/language/types/string.xml:1.6 --- phpdoc-fr/language/types/string.xml:1.5 Sat Jun 21 09:00:20 2008 +++ phpdoc-fr/language/types/string.xml Thu Jan 1 10:11:02 2009 @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="iso-8859-1"?> -<!-- $Revision: 1.5 $ --> -<!-- EN-Revision: 1.10 Maintainer: yannick Status: ready --> -<!-- Reviewed: no --> +<!-- $Revision: 1.6 $ --> +<!-- EN-Revision: 1.16 Maintainer: yannick Status: ready --> +<!-- Reviewed: yes --> <sect1 xml:id="language.types.string"> <title>Les chaînes de caractères</title> @@ -9,7 +9,7 @@ <para> Une &string; est une série de caractères. Avant PHP 6, un caractère est la même chose qu'un octet. Ainsi, il y a exactement 256 caractères différents. - Ceci impliquait également que PHP n'avait pas de support natif pour l'unicode. + Ceci impliquait également que PHP n'avait pas de support natif pour l'Unicode. Voir les fonctions <function>utf8_encode</function> et <function>utf8_decode</function> pour des fonctionnalités Unicode basiques. </para> @@ -32,22 +32,22 @@ <itemizedlist> <listitem> <simpara> - <link linkend="language.types.string.syntax.single">Entourée de simple guillemet</link> + <link linkend="language.types.string.syntax.single">Entourée de guillemets simples</link> </simpara> </listitem> <listitem> <simpara> - <link linkend="language.types.string.syntax.double">Entourée de guillemet double</link> + <link linkend="language.types.string.syntax.double">Entourée de guillemets doubles</link> </simpara> </listitem> <listitem> <simpara> - <link linkend="language.types.string.syntax.heredoc">syntaxe heredoc</link> + <link linkend="language.types.string.syntax.heredoc">syntaxe Heredoc</link> </simpara> </listitem> <listitem> <simpara> - <link linkend="language.types.string.syntax.nowdoc">syntax nowdoc</link> + <link linkend="language.types.string.syntax.nowdoc">syntaxe Nowdoc</link> (depuis PHP 5.3.0) </simpara> </listitem> @@ -219,7 +219,7 @@ <emphasis>ne doit pas être indenté</emphasis>, et il ne doit y avoir aucun espace ou tabulation avant ou après le point-virgule. Il est également important de garder à l'esprit que le premier caractère avant l'identifiant de fermeture - doit être une nouvelle ligne sur les systèmes Unix, incluant Max OS X. + doit être une nouvelle ligne sur les systèmes Unix, incluant Mac OSX. Le délimiteur de fermeture (pouvant être suivi d'un point-virgule) doit aussi être suivi d'une nouvelle ligne. </simpara> @@ -233,9 +233,9 @@ </simpara> <para> - Heredocs ne peut être utilisé pour initialiser les membres d'une classe. + Heredoc ne peut être utilisé pour initialiser les membres d'une classe. Utilisez la syntaxe - <link linkend="language.types.string.syntax.nowdoc">nowdocs</link> à la place. + <link linkend="language.types.string.syntax.nowdoc">Nowdoc</link> à la place. </para> <example> @@ -271,7 +271,7 @@ $str = <<<EOD Exemple de chaîne sur plusieurs lignes -en utilisant la syntaxe heredoc. +en utilisant la syntaxe Heredoc. EOD; /* Exemple plus complexe, avec des variables. */ @@ -304,8 +304,29 @@ <![CDATA[ Mon nom est "MyName". J'affiche quelques Foo. Maintenant, j'affiche quelques Bar2. -Et ceci devrait afficher un 'A': A -]]></screen> +Et ceci devrait afficher un 'A' majuscule : A +]]> + </screen> + + <para> + Il est aussi possible d'utiliser la syntaxe Heredoc + pour passer des arguments à une fonction : + </para> + + <example> + <title>Exemple d'utilisation de Heredoc pour passer des arguments</title> + <programlisting role="php"> +<![CDATA[ +<?php +var_dump(array(<<<EOD +foobar! +EOD +)); +?> +]]> + </programlisting> + </example> + <note> <para> Le support de la syntaxe Heredoc a été ajouté en PHP 4. @@ -316,10 +337,10 @@ <sect3 xml:id="language.types.string.syntax.nowdoc"> <title>Nowdoc</title> <para> - Nowdocs est aux chaînes entourées de guillemet simple ce qu'heredocs est - aux chaînes entourées de guillemet double. nowdoc est spécifié de manière - similaire à heredoc, mut <emphasis>aucune analyse n'est effectuée</emphasis> - dans une syntaxe nowdoc. La construction est idéale pour embarquer du code PHP + Nowdoc est aux chaînes entourées de guillemet simple ce qu'Heredoc est + aux chaînes entourées de guillemet double. Nowdoc est spécifié de manière + similaire à Heredoc, mut <emphasis>aucune analyse n'est effectuée</emphasis> + dans une syntaxe Nowdoc. La construction est idéale pour embarquer du code PHP ou d'autres larges blocs de texte, sans avoir besoin d'échapper quoi que ce soit. Cette syntaxe partage les mêmes fonctionnalités que le constructeur SGML <literal><![CDATA[ ]]></literal>, en ce qu'elle déclare un bloc de texte @@ -328,9 +349,9 @@ <para> Nowdoc est identifié avec la même séquence <literal><<<</literal> - utilisée par heredocs, mais l'identifiant qui suit est entouré de guillemet + utilisée par Heredoc, mais l'identifiant qui suit est entouré de guillemet simple,e.g. <literal><<<'EOT'</literal>. Toutes les règles concernant - les identifiants heredoc sont également appliquer aux identifiants nowdoc, + les identifiants Heredoc sont également appliquer aux identifiants Nowdoc, et tout spécialement, celles concernant l'apparence de l'identifiant. </para> @@ -342,7 +363,7 @@ $str = <<<'EOD' Exemple de chaîne sur plusieurs lignes -en utilisant la syntaxe nowdoc. +en utilisant la syntaxe Nowdoc. EOD; /* Exemple complexe, avec des variables. */ @@ -379,7 +400,7 @@ <note> <para> - Contrairement à heredocs, nowdocs peut être utilisé dans n'importe quel contexte + Contrairement à Heredoc, NowDoc peut être utilisé dans n'importe quel contexte de données statiques. L'exemple typique est l'initialisation de membres ou de constantes de classe : </para> @@ -412,7 +433,7 @@ <title>Analyse des variables</title> <simpara> - Lorsqu'une &string; est spécifié en guillemet double ou en heredoc, + Lorsqu'une &string; est spécifié en guillemet double ou en Heredoc, les <link linkend="language.variables">variables</link> sont analysées. </simpara> @@ -446,7 +467,7 @@ <?php $beer = 'Heineken'; echo "$beer's taste is great"; // fonctionne ; "'" est un caractère invalide pour les noms de variable -echo "He drank some $beers"; // ne fonctionne pas ; 's' est un caractère valide pour les noms de variable +echo "He drank some $beers"; // ne fonctionne pas ; 's' est un caractère valide dans un nom de variable et la variable est en fait "$beer" echo "He drank some ${beer}s"; // fonctionne echo "He drank some {$beer}s"; // fonctionne ?> @@ -598,6 +619,19 @@ </simpara> </note> + <warning> + <simpara> + Écrire à une position hors de l'intervalle de l'existant fait que + la chaîne est complétée par des espaces jusqu'à cette position. + Les positions sont toujours converties en valeur entière. + Les positions invalides produisent une alerte <constant>E_NOTICE</constant>. + Les positions négatives produisent une alerte <constant>E_NOTICE</constant> + en écriture, mais lisent une chaîne vide. + Seul le premier caractère d'une chaîne assignée est utilisée. + Assigner une chaîne vide assigne le caractère NUL. + </simpara> + </warning> + <example> <title>Quelques exemples de chaînes</title> <programlisting role="php"> http://cvs.php.net/viewvc.cgi/phpdoc-fr/language/types/array.xml?r1=1.5&r2=1.6&diff_format=u Index: phpdoc-fr/language/types/array.xml diff -u phpdoc-fr/language/types/array.xml:1.5 phpdoc-fr/language/types/array.xml:1.6 --- phpdoc-fr/language/types/array.xml:1.5 Wed Jun 18 16:17:00 2008 +++ phpdoc-fr/language/types/array.xml Thu Jan 1 10:11:02 2009 @@ -1,24 +1,24 @@ -<?xml version="1.0" encoding="iso-8859-1"?> -<!-- $Revision: 1.5 $ --> -<!-- EN-Revision: 1.4 Maintainer: yannick Status: ready --> -<!-- Reviewed: no --> +<?xml version="1.0" encoding="utf-8"?> +<!-- $Revision: 1.6 $ --> +<!-- EN-Revision: 1.7 Maintainer: yannick Status: ready --> +<!-- Reviewed: yes --> <sect1 xml:id="language.types.array"> <title>Les tableaux</title> <para> - Un tableau en PHP est actuellement une carte ordonnée. Une carte est un type - qui associe des <emphasis>valeurs</emphasis> en <emphasis>clés</emphasis>. - Ce type est optimisé pour différentes utilisations ; il peut être considéré + Un tableau en PHP est actuellement une carte ordonnée. Une carte est un type + qui associe des <emphasis>valeurs</emphasis> en <emphasis>clés</emphasis>. + Ce type est optimisé pour différentes utilisations ; il peut être considéré comme un tableau, une liste, une table de hashage, un dictionnaire, une collection, une pile, une file d'attente et probablement plus. On peut avoir, - comme valeur d'un tableau, d'autres tableaux, multi-dimensionnels ou non. + comme valeur d'un tableau, d'autres tableaux, multidimensionnels ou non. </para> <para> - La structure de ces données dépasse l'objet de ce manuel, mais vous trouverez - au moins un exemple pour chacun des cas évoqués. Pour plus d'informations, - reportez-vous aux différentes explications sur le sujet que l'on trouve + La structure de ces données dépasse l'objet de ce manuel, mais vous trouverez + au moins un exemple pour chacun des cas évoqués. Pour plus d'informations, + reportez-vous aux différentes explications sur le sujet que l'on trouve sur le web. </para> @@ -29,19 +29,19 @@ <title>Syntaxe d'un tableau</title> <para> - Un tableau peut être créé avec le constructeur de langage - <function>array</function>. Il prend un nombre illimité de paramètres, - chacun séparé par une virgule, sous la forme d'une paire - <literal><replaceable>clé</replaceable> => + Un tableau peut être créé avec le constructeur de langage + <function>array</function>. Il prend un nombre illimité de paramètres, + chacun séparé par une virgule, sous la forme d'une paire + <literal><replaceable>clé</replaceable> => <replaceable>valeur</replaceable></literal>. </para> <synopsis> -array( <optional> <replaceable>clé</replaceable> => </optional> <replaceable>valeur</replaceable> +array( <optional> <replaceable>clé</replaceable> => </optional> <replaceable>valeur</replaceable> , ... ) -// <replaceable>clé</replaceable> ne peut être qu'un &integer; ou une &string; -// <replaceable>valeur</replaceable> peut être de n'importe quel type</synopsis> +// <replaceable>clé</replaceable> ne peut être qu'un &integer; ou une &string; +// <replaceable>valeur</replaceable> peut être de n'importe quel type</synopsis> <!-- Do not fix the whitespace for the synopsis end element. A limitation of PhD prevents proper trimming --> <informalexample> @@ -58,17 +58,17 @@ </informalexample> <para> - Une <varname>clé</varname> peut être soit un &integer;, soit une &string;. - Si une clé est une représentation standard d'un &integer;, elle sera interprétée - comme telle (i.e. <literal>"8"</literal> sera interprété comme <literal>8</literal>, - alors que <literal>"08"</literal> sera interprétée comme <literal>"08"</literal>). - Les nombres à virgule flottante, en tant que clé, seront tronqués en &integer;. - Les tableaux indexés ou associatifs, en PHP, sont du même type ; ils peuvent + Une <varname>clé</varname> peut être soit un &integer;, soit une &string;. + Si une clé est une représentation standard d'un &integer;, elle sera interprétée + comme telle (i.e. <literal>"8"</literal> sera interprété comme <literal>8</literal>, + alors que <literal>"08"</literal> sera interprétée comme <literal>"08"</literal>). + Les nombres à virgule flottante, en tant que clé, seront tronqués en &integer;. + Les tableaux indexés ou associatifs, en PHP, sont du même type ; ils peuvent ainsi contenir des indices sous la forme d'&integer; et de &string;. </para> <para> - Une valeur peut être de n'importe quel type PHP. + Une valeur peut être de n'importe quel type PHP. </para> <informalexample> @@ -86,16 +86,16 @@ </informalexample> <para> - Si une clé n'est pas spécifiée pour une valeur, l'indice &integer; maximal - sera pris et la nouvelle clé sera cette valeur, plus 1. Si une clé contient - déjà une valeur associée, cette valeur sera écrasée. + Si une clé n'est pas spécifiée pour une valeur, l'indice &integer; maximal + sera pris et la nouvelle clé sera cette valeur, plus 1. Si une clé contient + déjà une valeur associée, cette valeur sera écrasée. </para> <informalexample> <programlisting role="php"> <![CDATA[ <?php -// Ce tableau est identique à ... +// Ce tableau est identique à ... array(5 => 43, 32, 56, "b" => 12); // ...ce tableau @@ -107,52 +107,52 @@ <warning> <simpara> - Avant PHP 4.3.0, le fait d'ajouter à un tableau une valeur, dont la précédent - clé est négative, reproduisait le comportement ci-dessus. Depuis PHP 4.3.0, la - nouvelle clé sera <literal>0</literal>. + Avant PHP 4.3.0, le fait d'ajouter à un tableau une valeur, dont la précédent + clé est négative, reproduisait le comportement ci-dessus. Depuis PHP 4.3.0, la + nouvelle clé sera <literal>0</literal>. </simpara> </warning> <para> - Utiliser &true; comme <varname>clé</varname> sera évalué à l'&integer; <literal>1</literal>. - Utiliser &false; comme <varname>clé</varname> sera évalué à l'&integer; <literal>0</literal>. - Utiliser &null; comme clé sera évalué à une &string; vide. - Utiliser une &string; vide comme clé créera une clé (ou l'écrasera) vide et sa valeur - ne sera <emphasis>pas</emphasis> la même si on utilise des parenthèses vides. + Utiliser &true; comme <varname>clé</varname> sera évalué à l'&integer; <literal>1</literal>. + Utiliser &false; comme <varname>clé</varname> sera évalué à l'&integer; <literal>0</literal>. + Utiliser &null; comme clé sera évalué à une &string; vide. + Utiliser une &string; vide comme clé créera une clé (ou l'écrasera) vide et sa valeur + ne sera <emphasis>pas</emphasis> la même si on utilise des parenthèses vides. </para> <para> - Les tableaux et les objets ne peuvent être utilisés comme clés. Si vous tentez de le faire, - une message de type Alerte sera émis : <literal>Illegal offset type</literal>. + Les tableaux et les objets ne peuvent être utilisés comme clés. Si vous tentez de le faire, + une message de type Alerte sera émis : <literal>Illegal offset type</literal>. </para> </sect3> <sect3 xml:id="language.types.array.syntax.modifying"> - <title>Création/modification avec des crochets</title> + <title>Création/modification avec des crochets</title> <para> - Un tableau existant peut être modifié en y assignant explicitement des valeurs. + Un tableau existant peut être modifié en y assignant explicitement des valeurs. </para> <para> - L'assignation d'une valeur dans un tableau est effectué en spécifiant - la clé, entre crochets. La clé peut également ne pas être renseignée, sous + L'assignation d'une valeur dans un tableau est effectué en spécifiant + la clé, entre crochets. La clé peut également ne pas être renseignée, sous la forme : <literal>[]</literal>. </para> <synopsis> -$arr[<replaceable>clé</replaceable>] = <replaceable>valeur</replaceable>; +$arr[<replaceable>clé</replaceable>] = <replaceable>valeur</replaceable>; $arr[] = <replaceable>valeur</replaceable>; -// <replaceable>clé</replaceable> peut être un &integer; ou une &string; -// <replaceable>valeur</replaceable> peut être n'importe quel type</synopsis> +// <replaceable>clé</replaceable> peut être un &integer; ou une &string; +// <replaceable>valeur</replaceable> peut être n'importe quel type</synopsis> <para> Si <varname>$arr</varname> n'existe pas lors de l'assignation, il sera - créé ; c'est ainsi une façon détournée de créer un tableau. Pour modifier - une valeur en particulier, il convient d'assigner une valeur en spécifiant - sa clé. Pour effacer une paire clé/valeur, il convient d'appeler la fonction - <function>unset</function> sur la clé désirée. + créé ; c'est ainsi une façon détournée de créer un tableau. Pour modifier + une valeur en particulier, il convient d'assigner une valeur en spécifiant + sa clé. Pour effacer une paire clé/valeur, il convient d'appeler la fonction + <function>unset</function> sur la clé désirée. </para> <informalexample> @@ -161,15 +161,15 @@ <?php $arr = array(5 => 1, 12 => 2); -$arr[] = 56; // Identique à $arr[13] = 56; - // à cet endroit du script +$arr[] = 56; // Identique à $arr[13] = 56; + // à cet endroit du script -$arr["x"] = 42; // Ceci ajoute un nouvel élément au - // tableau avec la clé "x" +$arr["x"] = 42; // Ceci ajoute un nouvel élément au + // tableau avec la clé "x" -unset($arr[5]); // Ceci efface l'élément du tableau +unset($arr[5]); // Ceci efface l'élément du tableau -unset($arr); // Ceci efface complètement le tableau +unset($arr); // Ceci efface complètement le tableau ?> ]]> </programlisting> @@ -177,17 +177,17 @@ <note> <para> - Comme dit plus haut, si aucune clé n'est spécifiée, l'indice maximal - existant est repris, et la nouvelle clé sera ce nombre, plus 1. Si - aucun indice entier n'existe, la clé sera <literal>0</literal> (zéro). - Si une clé existe, sa valeur sera écrasée. + Comme dit plus haut, si aucune clé n'est spécifiée, l'indice maximal + existant est repris, et la nouvelle clé sera ce nombre, plus 1. Si + aucun indice entier n'existe, la clé sera <literal>0</literal> (zéro). + Si une clé existe, sa valeur sera écrasée. </para> <para> - Notez que la clé entière maximale pour cette opération <emphasis>n'a + Notez que la clé entière maximale pour cette opération <emphasis>n'a pas besoin d'exister dans le tableau au moment de la manipulation</emphasis>. - 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é. + 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 : </para> @@ -195,21 +195,21 @@ <programlisting role="php"> <![CDATA[ <?php -// Création d'un tableau simple. +// Création d'un tableau simple. $array = array(1, 2, 3, 4, 5); print_r($array); -// Maintennant, on efface tous les éléments, mais on concerne le tableau : +// Maintennant, on efface tous les éléments, mais on concerne le tableau : foreach ($array as $i => $value) { unset($array[$i]); } print_r($array); -// Ajout d'un élément (notez que la nouvelle clé est 5, et non 0). +// Ajout d'un élément (notez que la nouvelle clé est 5, et non 0). $array[] = 6; print_r($array); -// Ré-indexation : +// Ré-indexation : $array = array_values($array); $array[] = 7; print_r($array); @@ -253,15 +253,15 @@ <para> Il y a beaucoup de fonctions utiles pour travailler avec les tableaux. - Nous vous invitons à lire la section de ce manuel sur les + Nous vous invitons à lire la section de ce manuel sur les <link linkend="ref.array">fonctions</link> en rapport avec les tableaux. </para> <note> <para> - La fonction <function>unset</function> permet d'effacer les clés d'un tableau. + La fonction <function>unset</function> permet d'effacer les clés d'un tableau. Soyez attentif sur le fait que le tableau ne sera <emphasis>pas</emphasis> - ré-indexé. Si vous voulez réaliser un effacement complet et une ré-indexation + ré-indexé. Si vous voulez réaliser un effacement complet et une ré-indexation de votre tableau, vous devez utiliser la fonction <function>array_values</function>. </para> @@ -287,8 +287,8 @@ </note> <para> - La structure de contrôle <link linkend="control-structures.foreach">foreach</link> - existe tout spécialement pour les tableaux. Elle fournit une façon pratique + La structure de contrôle <link linkend="control-structures.foreach">foreach</link> + existe tout spécialement pour les tableaux. Elle fournit une manière pratique de parcourir un tableau. </para> </sect2> @@ -300,7 +300,7 @@ <title>Pourquoi <literal>$foo[bar]</literal> est incorrect ?</title> <para> - Utiliser toujours des guillemets autour d'un index littéral. Par exemple, + Utiliser toujours des guillemets autour d'un index littéral. Par exemple, <literal>$foo['bar']</literal> est correct, alors que <literal>$foo[bar]</literal> ne l'est pas. Mais pourquoi ? il est courant de rencontrer ce genre de syntaxe dans d'ancien script : @@ -319,22 +319,22 @@ </informalexample> <para> - C'est incorrect, mais ça fonctionne. La raison est que ce code a une constante - indéfinie (bar) plutôt qu'une chaîne ('bar' - noter les guillemets). PHP - peut définir plus loin une constante portant le même nom. - Cela fonctionne car PHP convertit automatiquement une <emphasis>chaîne nue</emphasis> - (une chaîne sans guillemets qui ne correspond à aucun symbole connu) en une chaîne - qui la contient. Actuellement, s'il n'y a aucune constante nommée <constant>bar</constant>, - alors PHP substituera <literal>'bar'</literal> dans la chaîne et l'utilisera. + C'est incorrect, mais ça fonctionne. La raison est que ce code a une constante + indéfinie (bar) plutôt qu'une chaîne ('bar' - noter les guillemets). PHP + peut définir plus loin une constante portant le même nom. + Cela fonctionne car PHP convertit automatiquement une <emphasis>chaîne nue</emphasis> + (une chaîne sans guillemets qui ne correspond à aucun symbole connu) en une chaîne + qui la contient. Actuellement, s'il n'y a aucune constante nommée <constant>bar</constant>, + alors PHP substituera <literal>'bar'</literal> dans la chaîne et l'utilisera. </para> <note> <simpara> - Ceci ne signifie pas qu'il faut <emphasis>toujours</emphasis> mettre la clé entre guillemets. - N'utilisez pas de guillemets avec les clés qui sont des + Ceci ne signifie pas qu'il faut <emphasis>toujours</emphasis> mettre la clé entre guillemets. + N'utilisez pas de guillemets avec les clés qui sont des <link linkend="language.constants">constantes</link> ou des - <link linkend="language.variables">variables</link>, car cela empêcherait PHP de - les interpréter. + <link linkend="language.variables">variables</link>, car cela empêcherait PHP de + les interpréter. </simpara> <informalexample> @@ -348,7 +348,7 @@ $array = array(1, 2); $count = count($array); for ($i = 0; $i < $count; $i++) { - echo "\nVérification de $i : \n"; + echo "\nVérification de $i : \n"; echo "Mauvais : " . $array['$i'] . "\n"; echo "Bon : " . $array[$i] . "\n"; echo "Mauvais : {$array['$i']}\n"; @@ -361,7 +361,7 @@ &example.outputs; <screen> <![CDATA[ -Vérification de 0 : +Vérification de 0 : Notice: Undefined index: $i in /path/to/script.html on line 9 Mauvais : Bon : 1 @@ -369,7 +369,7 @@ Mauvais : Bon : 1 -Vérification de 1 : +Vérification de 1 : Notice: Undefined index: $i in /path/to/script.html on line 9 Mauvais : Bon : 2 @@ -397,36 +397,36 @@ print $arr['fruit']; // apple print $arr['veggie']; // carrot -// Incorrect. Ceci fonctionne mais PHP émettera une erreur de type E_NOTICE car -// on utilise la constante nommée fruit qui est indéfinie +// Incorrect. Ceci fonctionne mais PHP émettera une erreur de type E_NOTICE car +// on utilise la constante nommée fruit qui est indéfinie // // Notice: Use of undefined constant fruit - assumed 'fruit' in... print $arr[fruit]; // apple -// Ceci définit une constante pour expliquer ce qu'il ne va pas. La valeur 'veggie' -// est assignée à la constante nommée fruit. +// Ceci définit une constante pour expliquer ce qu'il ne va pas. La valeur 'veggie' +// est assignée à la constante nommée fruit. define('fruit', 'veggie'); -// Noter la différence maintenant +// Noter la différence maintenant print $arr['fruit']; // apple print $arr[fruit]; // carrot -// Ce qui squit est correct, car c'est dans une chaîne. Les constantes ne sont pas recherchées -// dans les chaînes, et donc, aucune alerte E_NOTICE ne sera émise +// Ce qui squit est correct, car c'est dans une chaîne. Les constantes ne sont pas recherchées +// dans les chaînes, et donc, aucune alerte E_NOTICE ne sera émise print "Hello $arr[fruit]"; // Hello apple -// Avec une exception : les parenthèses autour d'un tableau dans une chaîne permettent -// aux constantes d'être interprétées +// Avec une exception : les parenthèses autour d'un tableau dans une chaîne permettent +// aux constantes d'être interprétées print "Hello {$arr[fruit]}"; // Hello carrot print "Hello {$arr['fruit']}"; // Hello apple -// Ceci ne fonctionnera pas, et en résultera une erreur d'analyse, comme ceci : +// Ceci ne fonctionnera pas, et en résultera une erreur d'analyse, comme ceci : // Parse error: parse error, expecting T_STRING' or T_VARIABLE' or T_NUM_STRING' -// Ceci arrive lors de l'utilisation d'une supergloables dans les chaînes +// Ceci arrive lors de l'utilisation d'une supergloables dans les chaînes print "Hello $arr['fruit']"; print "Hello $_GET['foo']"; -// La concaténation est une autre solution +// La concaténation est une autre solution print "Hello " . $arr['fruit']; // Hello apple ?> ]]> @@ -434,18 +434,18 @@ </informalexample> <para> - Lorsque <link linkend="ini.error-reporting">error_reporting</link> est défini afin - de montrer les erreurs de type <constant>E_NOTICE</constant> (en le définissant à - <constant>E_ALL</constant>, par exemple), une telle pratique devient immédiatement - visible. Par défaut, - <link linkend="ini.error-reporting">error_reporting</link> n'est pas défini pour + Lorsque <link linkend="ini.error-reporting">error_reporting</link> est défini afin + de montrer les erreurs de type <constant>E_NOTICE</constant> (en le définissant à + <constant>E_ALL</constant>, par exemple), une telle pratique devient immédiatement + visible. Par défaut, + <link linkend="ini.error-reporting">error_reporting</link> n'est pas défini pour afficher toutes les alertes. </para> <para> Comme vu dans la section "<link linkend="language.types.array.syntax">syntaxe</link>", ce qui se trouve entre crochets ('<literal>[</literal>' et - '<literal>]</literal>') doit être une expression. Ceci signifie que le code ci-dessous + '<literal>]</literal>') doit être une expression. Ceci signifie que le code ci-dessous fonctionne : </para> @@ -461,7 +461,7 @@ <para> C'est un exemple d'utilisation d'une fonction retournant une valeur qui sera - la clé du tableau. PHP comprend également les constantes : + la clé du tableau. PHP comprend également les constantes : </para> <informalexample> @@ -477,9 +477,9 @@ </informalexample> <para> - Noter que <literal>E_ERROR</literal> est également un identifiant valide, + Noter que <literal>E_ERROR</literal> est également un identifiant valide, tout comme <literal>bar</literal> dans le premier exemple. Mais le dernier - exemple est finalement le même que celui-ci : + exemple est finalement le même que celui-ci : </para> <informalexample> @@ -502,21 +502,21 @@ <title>Alors, pourquoi est-ce une mauvaise pratique ?</title> <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'utiliser + 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'utiliser le mot <literal>empty</literal> et <literal>default</literal>, sachant que ce sont - des <link linkend="reserved">mots réservés</link>. + des <link linkend="reserved">mots réservés</link>. </para> <note> <simpara> - Pour être plus clair, dans une chaîne entourée de guillemets doubles, + Pour être plus clair, dans une chaîne entourée de guillemets doubles, il est valide de ne pas entourer les indexes d'un tableau avec des guillemets, et donc, <literal>"$foo[bar]"</literal> est valide. Voir - les exemples ci-dessous pour plus détails mais aussi la section sur + les exemples ci-dessous pour plus détails mais aussi la section sur l'<link linkend="language.types.string.parsing">analyse des variables - dans les chaînes</link>. + dans les chaînes</link>. </simpara> </note> @@ -529,18 +529,19 @@ <para> Pour tous les types : &integer;, &float;, &string;, &boolean; et &resource;, - le fait de convertir une valeur en un tableau résulte en un tableau contenant - un seul élément dont l'indexe vaut zéro et la valeur, une valeur scalaire convertie. + le fait de convertir une valeur en un tableau résulte en un tableau contenant + un seul élément dont l'indexe vaut zéro et la valeur, une valeur scalaire convertie. En d'autres termes, <literal>(array)$scalarValue</literal> est exactement la - même chose que <literal>array($scalarValue)</literal>. + même chose que <literal>array($scalarValue)</literal>. </para> <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'objet. Les clés sont les noms des membres, - avec une légère exception : les variables privées auront le nom de la classe - ajouté au nom de la variable ; les variables protégées auront un '*' ajouté - au nom de la variable. Ce comportement peut amener à des résultats inattendus : + 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'objet. Les clés sont les noms des membres, + avec une légère exception : les variables ayant un nom sous forme d'entier sont + inaccessible; les variables privées auront le nom de la classe + ajouté au nom de la variable ; les variables protégées auront un '*' ajouté + au nom de la variable. Ce comportement peut amener à des résultats inattendus : </para> <informalexample> @@ -564,12 +565,12 @@ </informalexample> <para> - Ici, on pourrait penser qu'il y a 2 clés nommées 'AA', alors qu'une est - actuellement nommée '\0A\0A'. + Ici, on pourrait penser qu'il y a 2 clés nommées 'AA', alors qu'une est + actuellement nommée '\0A\0A'. </para> <para> - La conversion de &null; en un tableau résultat en un tableau vide. + La conversion de &null; en un tableau résultat en un tableau vide. </para> </sect2> @@ -579,7 +580,7 @@ <para> Il est possible de comparer plusieurs tableaux avec la fonction <function>array_diff</function> ainsi qu'avec les - <link linkend="language.operators.array">opérateurs de tableaux</link>. + <link linkend="language.operators.array">opérateurs de tableaux</link>. </para> </sect2> @@ -594,26 +595,30 @@ <programlisting role="php"> <![CDATA[ <?php -// this +// This $a = array( 'color' => 'red', 'taste' => 'sweet', 'shape' => 'round', 'name' => 'apple', - 4 // la clé devrait être 0 + 4 // la clé sera 0 ); -// est strictement équivalent à +// est strictement équivalent à +$a = array(); $a['color'] = 'red'; $a['taste'] = 'sweet'; $a['shape'] = 'round'; $a['name'] = 'apple'; -$a[] = 4; // la clé devrait être 0 +$a[] = 4; // la clé sera 0 $b[] = 'a'; $b[] = 'b'; $b[] = 'c'; -// le tableau sera array(0 => 'a' , 1 => 'b' , 2 => 'c'), -// ou, simplement, array('a', 'b', 'c') + +// Après exécution du code ci-dessus, $a sera le tableau +// array('color' => 'red', 'taste' => 'sweet', 'shape' => 'round', +// 'name' => 'apple', 0 => 4), et $b sera le tableau +// array(0 => 'a', 1 => 'b', 2 => 'c'), ou simplement array('a', 'b', 'c'). ?> ]]> </programlisting> @@ -624,30 +629,30 @@ <programlisting role="php"> <![CDATA[ <?php -// Tableau comme carte de propriétés +// Tableau comme carte de propriétés $map = array( 'version' => 4, 'OS' => 'Linux', 'lang' => 'english', 'short_tags' => true ); -// clés numériques strictes +// clés numériques strictes $array = array( 7, 8, 0, 156, -10 ); -// est identique à array(0 => 7, 1 => 8, ...) +// est identique à array(0 => 7, 1 => 8, ...) -$switching = array( 10, // clé = 0 +$switching = array( 10, // clé = 0 5 => 6, 3 => 7, 'a' => 4, - 11, // clé = 6 (l'indice entier maximal est 5) - '8' => 2, // clé = 8 (intier !) - '02' => 77, // clé = '02' - 0 => 12 // la valeur 10 sera écrasée par la valeur 12 + 11, // clé = 6 (l'indice entier maximal est 5) + '8' => 2, // clé = 8 (intier !) + '02' => 77, // clé = '02' + 0 => 12 // la valeur 10 sera écrasée par la valeur 12 ); // empty array @@ -684,7 +689,7 @@ <para> La modification directe de valeurs d'un tableau est possible depuis PHP 5 - en le passant par référence. Avant cette version, nous devions utiliser l'astuce + en le passant par référence. Avant cette version, nous devions utiliser l'astuce suivante : </para> @@ -697,8 +702,8 @@ foreach ($colors as &$color) { $color = strtoupper($color); } -unset($color); /* On s'assure que les écritures suivantes -sur $color ne modifie pas le dernier élément du tableau */ +unset($color); /* On s'assure que les écritures suivantes +sur $color ne modifie pas le dernier élément du tableau */ // Astuce pour les anciennes versions foreach ($colors as $key => $color) { @@ -724,15 +729,15 @@ </example> <para> - Cet exemple crée un tableau, dont l'indexation commence à 1. + Cet exemple crée un tableau, dont l'indexation commence à 1. </para> <example> - <title>Indexation commençant à 1</title> + <title>Indexation commençant à 1</title> <programlisting role="php"> <![CDATA[ <?php -$firstquarter = array(1 => 'Janvier', 'Février', 'Mars'); +$firstquarter = array(1 => 'Janvier', 'Février', 'Mars'); print_r($firstquarter); ?> ]]> @@ -743,7 +748,7 @@ Array ( [1] => 'Janvier' - [2] => 'Février' + [2] => 'Février' [3] => 'Mars' ) ]]> @@ -755,7 +760,7 @@ <programlisting role="php"> <![CDATA[ <?php -// Remplit un tableau avec tous les éléments d'un dossier +// Remplit un tableau avec tous les éléments d'un dossier $handle = opendir('.'); while (false !== ($file = readdir($handle))) { $files[] = $file; @@ -767,10 +772,10 @@ </example> <para> - Les tableaux sont ordonnés. L'ordre peut être modifié en utilisant plusieurs + Les tableaux sont ordonnés. L'ordre peut être modifié en utilisant plusieurs fonctions. Voir la section sur les <link linkend="ref.array">fonctions sur les tableaux</link> pour plus d'informations. La fonction <function>count</function> - peut être utilisée pour compter le nombre d'éléments d'un tableau. + peut être utilisée pour compter le nombre d'éléments d'un tableau. </para> <example> @@ -786,13 +791,13 @@ </example> <para> - Sachant que la valeur d'une tableau peut être n'importe quoi, elle peut - aussi être un autre tableau. Ceci permet la création de tableaux récursifs - et de tableaux multi-dimensionnels. + Sachant que la valeur d'une tableau peut être n'importe quoi, elle peut + aussi être un autre tableau. Ceci permet la création de tableaux récursifs + et de tableaux multidimensionnels. </para> <example> - <title>Tableaux récursifs et multi-dimensionnels</title> + <title>Tableaux récursifs et multidimensionnels</title> <programlisting role="php"> <![CDATA[ <?php @@ -818,7 +823,7 @@ echo $fruits["fruits"]["a"]; // affiche "orange" unset($fruits["holes"][0]); // efface "first" -// Création d'un tableau multi-dimensionnel +// Création d'un tableau multi-dimensionnel $juices["apple"]["green"] = "good"; ?> ]]> @@ -827,11 +832,8 @@ <para> L'assignation d'un tableau induit toujours la copie des valeurs. - Cela signifie aussi que le pointeur interne du tableau utilisé - par la fonction <function>current</function> et ces équivalents, - est réinitialisé. Utilisez l' - <link linkend="language.operators">opérateur de référence</link> pour copier - un tableau par référence. + Utilisez l'<link linkend="language.operators">opérateur de référence</link> + pour copier un tableau par référence. </para> <informalexample> @@ -840,7 +842,7 @@ <?php $arr1 = array(2, 3); $arr2 = $arr1; -$arr2[] = 4; // $arr2 est modifié, +$arr2[] = 4; // $arr2 est modifié, // $arr1 vaut toujours array(2, 3) $arr3 = &$arr1;