Operadores de incremento/decremento ¶
PHP soporta operadores estilo C de pre- y post-incremento y 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:
<?phpecho "<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
<?phpecho '== Letras ==' . PHP_EOL;$s = 'W';
for ($n=0; $n<6; $n++) {
echo ++$s . PHP_EOL;
}// Los caracteres de dígitos tienen un comportamiento diferenteecho '== 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
http://php.net/manual/es/language.operators.increment.php
No hay comentarios:
Publicar un comentario