Operadores de incremento y decremento
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.
| 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. |
Operadores de incremento y decremento
A continuación, se presenta un ejemplo simple:
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)
[!WARNING] Los operadores de incremento y decremento no tienen ningún efecto sobre los valores de tipo
bool. UnE_WARNINGes emitido a partir de PHP 8.3.0, ya que esto convertirá implícitamente el valor eninten el futuro.El operador de decremento no tiene ningún efecto sobre los valores de tipo
null. UnE_WARNINGes emitido a partir de PHP 8.3.0, ya que esto convertirá implícitamente el valor eninten el futuro.El operador de decremento no tiene ningún efecto sobre los strings no- numéricos. Un
E_WARNINGes emitido a partir de PHP 8.3.0, ya que unaTypeErrorserá levantada en el futuro.[!NOTE] 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#
[!WARNING] Esta funcionalidad es deprecada de manera suave a partir de PHP 8.3.0. La función
str_incrementdebe 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 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
[!WARNING] Si el string alfanumérico puede ser interpretado como un string numérico, será convertido en
into enfloat. Esto es particularmente problemático con los strings que se asemejan a números de punto flotante escritos en notación exponencial. La funciónstr_incrementno sufre de estas conversiones de tipo implícitas.Conversión de string alfanumérico a flotante
```
```
El ejemplo anterior mostrará:
string(3) "5e0" float(6)Esto se debe a que el valor
"5e0"es interpretado como unfloaty convertido en el valor5.0antes de ser incrementado.