## Operadores de incremento y decremento

PHP soporta los operadores de pre- y post- incremento y decremento. Estos operadores unaires permiten aumentar o disminuir la valor de un.

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

A continuación, se presenta un ejemplo simple:

Ejemplo #1 Ejemplos de incremento/decremento

    <?php
    echo 'Post-incremento:', PHP_EOL;
    $a = 5;
    var_dump($a++);
    var_dump($a);
    echo 'Pre-incremento:', PHP_EOL;
    $a = 5;
    var_dump(++$a);
    var_dump($a);
    echo 'Post-decremento:', PHP_EOL;
    $a = 5;
    var_dump($a--);
    var_dump($a);
    echo 'Pre-decremento:';
    $a = 5;
    var_dump(--$a);
    var_dump($a);
    ?>

El ejemplo anterior mostrará:

    Post-incremento:
    int(5)
    int(6)
    Pre-incremento:
    int(6)
    int(6)
    Post-decremento:
    int(5)
    int(4)
    Pre-decremento:
    int(4)
    int(4)

Advertencia

Los operadores de incremento y decremento no tienen ningún efecto sobre los valores de tipo bool. Un `E_WARNING` es emitido a partir de PHP 8.3.0, ya que esto convertirá implícitamente el valor en int en el futuro.

El operador de decremento no tiene ningún efecto sobre los valores de tipo null. Un `E_WARNING` es emitido a partir de PHP 8.3.0, ya que esto convertirá implícitamente el valor en int en el futuro.

El operador de decremento no tiene ningún efecto sobre los strings no- numéricos. Un `E_WARNING` es emitido a partir de PHP 8.3.0, ya que una TypeError será levantada en el futuro.

> Nota:

> Los objetos internos que soportan la sobrecarga de la adición y/o la sustracción pueden ser incrementados y/o decrementados asimismo. Un objeto interno de este tipo es GMP.

### Funcionalidad de incremento de strings PERL

Advertencia

Esta funcionalidad es deprecada de manera suave a partir de PHP 8.3.0. La función str_increment() debe ser utilizada en su lugar.

Es posible incrementar un string no numérico en PHP. El string debe ser un string ASCII alfanumérico. Esto incrementa las letras hasta la siguiente letra, y cuando se alcanza la letra `Z`, el incremento se reporta al valor a la izquierda. Por ejemplo, `$a = 'Z'; $a++;` transforma $a en `'AA'`.

Ejemplo #2 Ejemplo de incremento de string PERL

    <?php
    echo '== Strings alfabéticos ==' . PHP_EOL;
    $s = 'W';
    for ($n=0; $n<6; $n++) {
        echo ++$s . PHP_EOL;
    }
    // Los strings alfanuméricos se comportan de manera diferente
    echo '== Caracteres digitales ==' . 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 ejemplo anterior mostrará:

    == Strings alfabéticos ==
    X
    Y
    Z
    AA
    AB
    AC
    == Strings alfanuméricos ==
    A9
    B0
    B1
    B2
    B3
    B4
    A09
    A10
    A11
    A12
    A13
    A14

Advertencia

Si el string alfanumérico puede ser interpretado como un string numérico, será convertido en int o en float. Esto es particularmente problemático con los strings que se asemejan a números de punto flotante escritos en notación exponencial. La función str_increment() no sufre de estas conversiones de tipo implícitas.

Ejemplo #3 Conversión de string alfanumérico a flotante

    <?php
    $s = "5d9";
    var_dump(++$s);
    var_dump(++$s);
    ?>

El ejemplo anterior mostrará:

    string(3) "5e0"
    float(6)

Esto se debe a que el valor `"5e0"` es interpretado como un float y convertido en el valor `5.0` antes de ser incrementado.

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open