PHP ofrece soporte de operadores de pre- y post-incremento y decremento, estilo-C.
Note: Los operadores de incremento/decremento no afectan a los valores booleanos. Decrementar valores NULL tampoco tiene efecto, aunque incrementarlos resulta en 1.
Ejemplo | Nombre | Efecto |
---|---|---|
++$a | Pre-incremento | Incrementa $a en uno, y luego devuelve $a. |
$a++ | Post-incremento | Devuelve $a, y luego incrementa $a en uno. |
--$a | Pre-decremento | Decrementa $a en uno, luego devuelve $a. |
$a-- | Post-decremento | Devuelve $a, luego decrementa $a en uno. |
Aquí hay un script sencillo 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 caracter, y no la convención de C. Por ejemplo, en Perl 'Z'+1 se convierte en 'AA', mientras que en C 'Z'+1 se convierte en '[' ( ord('Z') == 90, ord('[') == 91). Note que las variables de caracter pueden ser incrementadas pero no decrementadas, y aun así solo son soportados los caracteres ASCII planos (a-z y A-Z).
Example#1 Operaciones Aritméticas sobre Variables de Caracter
<?php
$i = 'W';
for ($n=0; $n<6; $n++) {
echo ++$i . "\n";
}
?>
El resultado del ejemplo seria:
X Y Z AA AB AC
Incrementar o decrementar valores booleanos no tiene efecto.