Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

++ 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