mirror of
https://github.com/php/doc-fr.git
synced 2026-03-24 07:02:06 +01:00
261 lines
7.3 KiB
XML
261 lines
7.3 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<!-- EN-Revision: 16934048f79c6e117cd16a23c09c1b2ea502e284 Maintainer: yannick Status: ready -->
|
|
<!-- Reviewed: no -->
|
|
<sect1 xml:id="language.operators.assignment">
|
|
<title>Les opérateurs d'affectation</title>
|
|
<titleabbrev>Affectation</titleabbrev>
|
|
<simpara>
|
|
L'opérateur d'affectation le plus simple est le signe "=".
|
|
Le premier réflexe est de penser que ce signe veut dire
|
|
"égal à". Ce n'est pas le cas. Il signifie que
|
|
l'opérande de gauche se voit affecter la valeur de
|
|
l'expression qui est à droite du signe égal.
|
|
</simpara>
|
|
<para>
|
|
La valeur d'une expression d'affectation est la valeur
|
|
affectée. Par exemple, la valeur de l'expression
|
|
'<literal>$a = 3</literal>' est la valeur 3. Cela permet d'utiliser
|
|
des astuces telles que :
|
|
<example>
|
|
<title>Affectations imbriquées</title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
$a = ($b = 4) + 5;
|
|
// $a est maintenant égal à 9, et $b vaut 4.
|
|
var_dump($a);
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
</example>
|
|
</para>
|
|
<para>
|
|
En plus du simple opérateur d'affectation, il existe des
|
|
"opérateurs combinés" pour tous les opérateurs
|
|
<link linkend="language.operators">arithmétiques</link>,
|
|
l'union de tableaux et pour les opérateurs sur les chaînes de caractères.
|
|
Cela permet d'utiliser la valeur d'une variable dans une expression et
|
|
d'affecter le résultat de cette expression à cette variable.
|
|
Par exemple :
|
|
<example>
|
|
<title>Affectations Combinées</title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
$a = 3;
|
|
$a += 5; // affecte la valeur 8 à la variable $a correspond à l'instruction '$a = $a + 5';
|
|
$b = "Bonjour ";
|
|
$b .= " tout le monde!"; // affecte la valeur "Bonjour tout le monde!" à
|
|
// la variable $b
|
|
// identique à $b = $b." tout le monde!";
|
|
|
|
var_dump($a, $b);
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
</example>
|
|
</para>
|
|
<para>
|
|
On peut noter que l'affectation copie le contenu de la variable originale
|
|
dans la nouvelle variable (affectation par valeur), ce qui fait que les
|
|
changements de valeur d'une variable ne modifieront pas la valeur de
|
|
l'autre. Cela peut se révéler important lors de la copie d'un grand tableau
|
|
durant une boucle.
|
|
</para>
|
|
<para>
|
|
Une exception au comportement d'affectation par valeur en PHP est le type
|
|
<type>object</type>, ceux-ci sont affectés par référence.
|
|
La copie d'objet doit être explicitement demandée grâce au mot-clé
|
|
<link linkend="language.oop5.cloning">clone</link>.
|
|
</para>
|
|
|
|
<sect2 xml:id="language.operators.assignment.reference">
|
|
<title>Affectation par référence</title>
|
|
<para>
|
|
L'affectation par référence est aussi supportée, au moyen de la syntaxe
|
|
"<computeroutput>$var = &$othervar;</computeroutput>". L'affectation par
|
|
référence signifie que les deux variables pointent vers le même conteneur de
|
|
donnée, rien n'est copié nulle part.
|
|
</para>
|
|
<para>
|
|
<example>
|
|
<title>Affectation par référence</title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
$a = 3;
|
|
$b = &$a; // $b est une référence à $a
|
|
|
|
print "$a\n"; // affiche 3
|
|
print "$b\n"; // affiche 3
|
|
|
|
$a = 4; // change $a
|
|
|
|
print "$a\n"; // affiche 4
|
|
print "$b\n"; // affiche 4 aussi, car $b est une référence à $a, qui a été
|
|
// changée
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
</example>
|
|
</para>
|
|
<para>
|
|
L'opérateur <link linkend="language.oop5.basic.new">new</link>
|
|
retourne une référence automatiquement, de ce fait, assigner le résultat de
|
|
<link linkend="language.oop5.basic.new">new</link> par référence est une erreur
|
|
</para>
|
|
<para>
|
|
<example>
|
|
<title>Nouvel opérateur par référence</title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
class C {}
|
|
|
|
$o = &new C;
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
&example.outputs;
|
|
<screen>
|
|
<![CDATA[
|
|
Parse error: syntax error, unexpected token ";", expecting "("
|
|
]]>
|
|
</screen>
|
|
</example>
|
|
</para>
|
|
<para>
|
|
Plus d'informations sur les références et leurs utilisations possibles peuvent être
|
|
trouvées dans la section du manuel <link linkend="language.references">Les références
|
|
expliquées</link>.
|
|
</para>
|
|
</sect2>
|
|
|
|
<sect2 xml:id="language.operators.assignment.arithmetic">
|
|
<title>Les opérateurs d'affectation arithmétiques</title>
|
|
<informaltable>
|
|
<tgroup cols="3">
|
|
<thead>
|
|
<row>
|
|
<entry>Exemple</entry>
|
|
<entry>Equivalent</entry>
|
|
<entry>Opération</entry>
|
|
</row>
|
|
</thead>
|
|
<tbody>
|
|
<row>
|
|
<entry>$a += $b</entry>
|
|
<entry>$a = $a + $b</entry>
|
|
<entry>Addition</entry>
|
|
</row>
|
|
<row>
|
|
<entry>$a -= $b</entry>
|
|
<entry>$a = $a - $b</entry>
|
|
<entry>Soustraction</entry>
|
|
</row>
|
|
<row>
|
|
<entry>$a *= $b</entry>
|
|
<entry>$a = $a * $b</entry>
|
|
<entry>Multiplication</entry>
|
|
</row>
|
|
<row>
|
|
<entry>$a /= $b</entry>
|
|
<entry>$a = $a / $b</entry>
|
|
<entry>Division</entry>
|
|
</row>
|
|
<row>
|
|
<entry>$a %= $b</entry>
|
|
<entry>$a = $a % $b</entry>
|
|
<entry>Modulo</entry>
|
|
</row>
|
|
<row>
|
|
<entry>$a **= $b</entry>
|
|
<entry>$a = $a ** $b</entry>
|
|
<entry>Exponentiation</entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</informaltable>
|
|
</sect2>
|
|
|
|
<sect2 xml:id="language.operators.assignment.bitwise">
|
|
<title>Opérateurs d'affectation bits à bits</title>
|
|
<informaltable>
|
|
<tgroup cols="3">
|
|
<thead>
|
|
<row>
|
|
<entry>Exemple</entry>
|
|
<entry>Equivalent</entry>
|
|
<entry>Opération</entry>
|
|
</row>
|
|
</thead>
|
|
<tbody>
|
|
<row>
|
|
<entry>$a &= $b</entry>
|
|
<entry>$a = $a & $b</entry>
|
|
<entry>Opérateur And</entry>
|
|
</row>
|
|
<row>
|
|
<entry>$a |= $b</entry>
|
|
<entry>$a = $a | $b</entry>
|
|
<entry>Opérateur Or</entry>
|
|
</row>
|
|
<row>
|
|
<entry>$a ^= $b</entry>
|
|
<entry>$a = $a ^ $b</entry>
|
|
<entry>Opérateur Xor</entry>
|
|
</row>
|
|
<row>
|
|
<entry>$a <<= $b</entry>
|
|
<entry>$a = $a << $b</entry>
|
|
<entry>Décalage à gauche</entry>
|
|
</row>
|
|
<row>
|
|
<entry>$a >>= $b</entry>
|
|
<entry>$a = $a >> $b</entry>
|
|
<entry>Décalage à droite</entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</informaltable>
|
|
</sect2>
|
|
|
|
<sect2 xml:id="language.operators.assignment.other">
|
|
<title>Autres opérateurs d'affectation</title>
|
|
<informaltable>
|
|
<tgroup cols="3">
|
|
<thead>
|
|
<row>
|
|
<entry>Exemple</entry>
|
|
<entry>Equivalent</entry>
|
|
<entry>Opération</entry>
|
|
</row>
|
|
</thead>
|
|
<tbody>
|
|
<row>
|
|
<entry>$a .= $b</entry>
|
|
<entry>$a = $a . $b</entry>
|
|
<entry>Concaténation d'une chaîne de caractères</entry>
|
|
</row>
|
|
<row>
|
|
<entry>$a ??= $b</entry>
|
|
<entry>$a = $a ?? $b</entry>
|
|
<entry>Opérateur de coalescence nul</entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</informaltable>
|
|
</sect2>
|
|
|
|
<sect2 role="seealso" xml:id="language.operators.assignment.see-also">
|
|
&reftitle.seealso;
|
|
<para>
|
|
<simplelist>
|
|
<member><link linkend="language.operators.arithmetic">les opérateurs arithmétiques</link></member>
|
|
<member><link linkend="language.operators.bitwise">les opérateurs bits à bits</link></member>
|
|
<member><link linkend="language.operators.comparison.coalesce">les opérateurs de coalescence nul</link></member>
|
|
</simplelist>
|
|
</para>
|
|
</sect2>
|
|
</sect1>
|