++ Riddle
<?php
$a = 5;
$b = $a++-++$a;
echo $b; // -2
echo $a; // 7
// This, sadly, doesn't compile
//$b = $a+++++$a;
$a = 5;
$b = $a++ + ++$a; // 12
echo $b; // 12
echo $a; // 7
PHP n’a pas d’opérateur ++-++. Cela doit être lu avec des espaces, comme ++ - ++ : il y a un opérateur de post-incrémentation, une soustraction puis un opérateur de pré-incrémentation.
Dans ce cas, le premier opérateur incrémente $a de 5 à 6, mais retourne la valeur originale 5. L’opérateur suivant est la soustraction, qui agit sur le résultat de l’opérateur de pré-incrémentation : celui-ci fait passer 6 à 7. Le résultat est donc -2.
PHP ne peut pas compiler +++++, car il confond les opérateurs d’addition et d’incrémentation. L’ajout d’espaces rend le code valide, et le même ordre des opérations s’applique comme ci-dessus, donnant 12.
Le billet original date de 2011 et a été testé dans différents langages : le résultat peut vous surprendre. PHP a au moins été cohérent à ce sujet depuis lors.
See Also
PHP Features
Last updated: 11 October 2026