## Operadores de incremento/decremento

PHP soporta operadores estilo C de pre- y post-incremento y decremento.

> Nota: Los operadores de incremento/decremento solamente afectan a números y strings. Los arrays, objects y resources no se ven afectados. Decrementar valores `null` tampoco tiene efecto, pero incrementarlos entonces resulta en `1`.

Operadores de incremento/decremento
Ejemplo | Nombre | Efecto
--- | --- | ---
++$a | Pre-incremento | Incrementa $a en uno, y luego retorna $a.
$a++ | Post-incremento | Retorna $a, y luego incrementa $a en uno.
--$a | Pre-decremento | Decrementa $a en uno, luego retorna $a.
$a-- | Post-decremento | Retorna $a, luego decrementa $a en uno.

Aquí hay un script simple de ejemplo:

`<?php
echo "<h3>Postincremento</h3>";
$a = 5;
echo "Debe ser 5: " . $a++ . "<br />\n";
echo "Debe ser 6: " . $a . "<br />\n";
echo "<h3>Preincremento</h3>";
$a = 5;
echo "Debe ser 6: " . ++$a . "<br />\n";
echo "Debe ser 6: " . $a . "<br />\n";
echo "<h3>Postdecremento</h3>";
$a = 5;
echo "Debe ser 5: " . $a-- . "<br />\n";
echo "Debe ser 4: " . $a . "<br />\n";
echo "<h3>Predecremento</h3>";
$a = 5;
echo "Debe ser 4: " . --$a . "<br />\n";
echo "Debe ser 4: " . $a . "<br />\n";
?>`

PHP sigue la convención de Perl cuando trabaja con operaciones aritméticas sobre variables de caracteres y no la de C. Por ejemplo, en PHP y Perl `$a = 'Z'; $a++;` convierte `$a` en `'AA'`, mientras que en C `a = 'Z'; a++;` convierte `a` en `'['` (el valor ASCII de `'Z'` es 90, el valor ASCII de `'['` es 91). Nótese que las variables de caracteres pueden ser incrementadas pero no decrementadas y aun así sólo caracteres y dígitos de ASCII puro (a-z, A-Z y 0-9) están soportados. Incrementar o decrementar otras variables de caracteres no tiene efecto, el string original no se modifica.

Ejemplo #1 Operaciones aritméticas sobre variables de caracteres

`<?php
echo '== Letras ==' . PHP_EOL;
$s = 'W';
for ($n=0; $n<6; $n++) {
echo ++$s . PHP_EOL;
}
// Los caracteres de dígitos tienen un comportamiento diferente
echo '== Dígitos ==' . 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;
}
?>`

El resultado del ejemplo sería:

    == Letras ==
    X
    Y
    Z
    AA
    AB
    AC
    == Dígitos ==
    A9
    B0
    B1
    B2
    B3
    B4
    A09
    A10
    A11
    A12
    A13
    A14

Incrementar o decrementar booleanos no tiene efecto.