Manuel PHP
Précédent | Chapitre 15. Les opérateurs | Suivant

# Opérateurs d'incrémentation et décrémentation

PHP supporte les opérateurs de pre- et post-incrémentation et décrémentation, comme en langage C.

> Note : Les opérateurs d'incrémentation/décrémentation n'affectent pas les valeurs booléennes. La décrémentation des valeurs `NULL` n'a également aucun effet, mais leur incrémentation donnera comme résultat `1`.

Tableau 15-6. Opérateurs d'incrémentation et décrémentation

Exemple | Nom | Résultat
--- | --- | ---
`++$a` | Pre-incrémente | Incrémente `$a` de 1, puis retourne `$a`.
`$a++` | Post-incrémente | Retourne `$a`, puis l'incrémente de 1.
`--$a` | Pré-décrémente | Décrémente `$a` de 1, puis retourne `$a`.
`$a--` | Post-décrémente | Retourne `$a`, puis décrémente `$a` de 1.

Voici un exemple simple

Exemple 15-10. Exemples d'incrémentations et décrémentations

`<?php
echo '<h3>Post-incrémentation</h3>';
$a = 5;
echo "Devrait valoir 5: " . $a++ . "<br />\n";
echo "Devrait valoir 6: " . $a . "<br />\n";
echo '<h3>Pre-incrémentation</h3>';
$a = 5;
echo "Devrait valoir 6: " . ++$a . "<br />\n";
echo "Devrait valoir 6: " . $a . "<br />\n";
echo '<h3>Post-décrémentation</h3>';
$a = 5;
echo "Devrait valoir 5: " . $a-- . "<br />\n";
echo "Devrait valoir 4: " . $a . "<br />\n";
echo '<h3>Pre-décrémentation</h3>';
$a = 5;
echo "Devrait valoir 4: " . --$a . "<br />\n";
echo "Devrait valoir 4: " . $a . "<br />\n";
?>`

PHP suit les conventions de Perl pour la gestion des opérateurs arithmétiques, et non pas celle du C. Par exemple, en Perl `'Z'+1` retourne `'AA'`, alors qu'en C, `'Z'+1` retourne `'['` (`ord('Z') == 90`, donc `ord('[') == 91`). Notez que les variables de caractères peuvent être incrémentées, mais pas décrémentées et même seuls les caractères ASCII (a-z et A-Z) sont supportés.

Exemple 15-11. Opérations arithmétiques sur un caractère

`<?php $i = 'W'; for($n=0; $n<6; $n++) { echo ++$i . "\n"; } ?>`

L'exemple ci-dessus va afficher :

    X
    Y
    Z
    AA
    AB
    AC

L'incrémentation ou la décrémentation d'un booléen n'a aucun effet.

Précédent | Sommaire | Suivant
Opérateur d'exécution | Niveau supérieur | Les opérateurs logiques