Este post va a ir dedicado a los Incrementos y Decrementos en PHP. Hay que decir que son conceptos un poco confusos al principio pero que una vez que se le coja el truco.
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.
Incrementos y decrementos:
- Postincremento: Quiere decir que primero imprime el valor de la variable y después se le suma uno al valor.
- Preincremento: Quiere decir que primero suma uno al valor de la variable y después imprime dicho valor.
- Postdecremento: Quiere decir que primero imprime el valor de la variable y después resta uno al valor.
- Predecremento: Quiere decir que primero se le resta uno al valor de la variable y después imprime dicho valor.
echo "<p> <h3>Postincremento</h3> </p>"; $a = 5; echo "La variable $a vale $a al comienzo: <br/>"; echo "Debe ser 5: " . $a++ . "<br/>n"; echo "Debe ser 6: " . $a . "<br/>n";
echo "<h3>Preincremento</h3>";
$a = 5;
echo "La variable $a vale $a al comienzo: <br/>";
echo "Debe ser 6: " . ++$a . "<br/>n";
echo "Debe ser 6: " . $a . "<br/>n";
echo "<h3>Postdecremento</h3>";
$a = 5;
echo "La variable $a vale $a al comienzo: <br/>";
echo "Debe ser 5: " . $a-- . "<br/>n";
echo "Debe ser 4: " . $a . "<br/>n";
echo "<h3>Predecremento</h3>";
$a = 5;
echo "La variable $a vale $a al comienzo: <br/>";
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.