O PHP suporta operadores de pré e pós-incremento e decremento no estilo C.
Nota: Os operadores incremento/decremento não afetam valores booleanos. Decrementando valores
NULL
não há efeito também, mas incrementando resulta em 1.
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 'Z'+1 se torna 'AA', enquanto que no C 'Z'+1 se torna '[' ( ord('Z') == 90, ord('[') == 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.
Exemplo #1 Operações aritmétricas em variáveis caractere
<?php
$i = 'W';
for ($n=0; $n<6; $n++) {
echo ++$i . "\n";
}
?>
O exemplo acima irá imprimir:
X Y Z AA AB AC
Incrementar ou decrementar booleanos não há efeito.