Operadores de Incremento/Decremento

O PHP suporta operadores de pré e pós-incremento e decremento no estilo C.

Nota: Os operadores incremento/decremento afetam apenas números e strings. Arrays, objetos e recursos não são afetados. Decrementar NULL não gera efeitos, mas incrementar resulta em 1.

Operadores de Incremento/Decremento
Exemplo Nome Efeito
++$a Pré-incremento Incrementa $a em um, e então retorna $a.
$a++ Pós-incremento Retorna $a, e então incrementa $a em um.
--$a Pré-decremento Decrementa $a em um, e então retorna $a.
$a-- Pós-decremento Retorna $a, e então decrementa $a em um.

Aqui está um script de exemplo simples:

<?php
echo "<h3>Pós-incremento</h3>";
$a 5;
echo 
"Deve ser 5: " $a++ . "<br />\n";
echo 
"Deve ser 6: " $a "<br />\n";

echo 
"<h3>Pré-incremento</h3>";
$a 5;
echo 
"Deve ser 6: " . ++$a "<br />\n";
echo 
"Deve ser 6: " $a "<br />\n";

echo 
"<h3>Pós-decremento</h3>";
$a 5;
echo 
"Deve ser 5: " $a-- . "<br />\n";
echo 
"Deve ser 4: " $a "<br />\n";

echo 
"<h3>Pré-decremento</h3>";
$a 5;
echo 
"Deve ser 4: " . --$a "<br />\n";
echo 
"Deve ser 4: " $a "<br />\n";
?>

O PHP segue a convenção Perl quando tratando operações aritmétricas em variavéis caracter em vez da convenção C. Por exemplo, em Perl $a = 'Z'; $a++; transforma $a em 'AA' enquanto que em C a = 'Z'; a++; transforma a em '[' (valor ASCII de 'Z' é 90, valor ASCII '[' é 91). Note que variáveis caracter podem ser incrementadas mas não decrementadas e somente caracteres plain ASCII (a-z e A-Z) são suportados. Incrementar ou decrementar outros caracteres não tem efeitos, a string original não sendo modificada.

Exemplo #1 Operações aritmétricas em variáveis caractere

<?php
echo '== Alphabets ==' PHP_EOL;
$s 'W';
for (
$n=0$n<6$n++) {
    echo ++
$s PHP_EOL;
}
// Digit characters behave differently
echo '== Digits ==' PHP_EOL;
$d 'A8';
for (
$n=0$n<6$n++) {
    echo ++
$d PHP_EOL;
}
$d 'A08';
for (
$n=0$n<6$n++) {
    echo ++
$d PHP_EOL;
}
?>

O exemplo acima irá imprimir:

== Characters ==
X
Y
Z
AA
AB
AC
== Digits ==
A9
B0
B1
B2
B3
B4
A09
A10
A11
A12
A13
A14

Incrementar ou decrementar booleanos não há efeito.