1
0
mirror of https://github.com/php/doc-es.git synced 2026-03-23 23:12:09 +01:00
Files
archived-doc-es/language/operators/increment.xml
2025-05-06 22:25:22 +02:00

232 lines
5.6 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 16934048f79c6e117cd16a23c09c1b2ea502e284 Maintainer: PhilDaiguille Status: ready -->
<!-- Reviewed: no -->
<sect1 xml:id="language.operators.increment">
<title>Operadores de incremento y decremento</title>
<titleabbrev>Incremento y decremento</titleabbrev>
<para>
PHP soporta los operadores de pre- y post- incremento y decremento.
Estos operadores unaires permiten aumentar o disminuir la valor de un.
</para>
<table>
<title>Operadores de incremento y decremento</title>
<tgroup cols="3">
<thead>
<row>
<entry>Ejemplo</entry>
<entry>Nombre</entry>
<entry>Resultado</entry>
</row>
</thead>
<tbody>
<row>
<entry>++$a</entry>
<entry>Pre-incrementa</entry>
<entry>
Incrementa <varname>$a</varname> en 1, luego retorna
<varname>$a</varname>.
</entry>
</row>
<row>
<entry>$a++</entry>
<entry>Post-incrementa</entry>
<entry>Retorna <varname>$a</varname>, luego incrementa <varname>$a</varname> en 1.</entry>
</row>
<row>
<entry>--$a</entry>
<entry>Pre-decrementa</entry>
<entry>
Decrementa <varname>$a</varname> en 1, luego retorna
<varname>$a</varname>.
</entry>
</row>
<row>
<entry>$a--</entry>
<entry>Post-decrementa</entry>
<entry>
Retorna <varname>$a</varname>, luego decrementa
<varname>$a</varname> en 1.
</entry>
</row>
</tbody>
</tgroup>
</table>
<para>
A continuación, se presenta un ejemplo simple:
<example>
<title>Ejemplos de incremento/decremento</title>
<programlisting role="php">
<![CDATA[
<?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);
?>
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
Post-incremento:
int(5)
int(6)
Pre-incremento:
int(6)
int(6)
Post-decremento:
int(5)
int(4)
Pre-decremento:
int(4)
int(4)
]]>
</screen>
</example>
<warning>
<para>
Los operadores de incremento y decremento no tienen ningún efecto sobre los valores
de tipo <type>bool</type>.
Un <constant>E_WARNING</constant> es emitido a partir de PHP 8.3.0,
ya que esto convertirá implícitamente el valor en <type>int</type> en el futuro.
</para>
<para>
El operador de decremento no tiene ningún efecto sobre los valores
de tipo <type>null</type>.
Un <constant>E_WARNING</constant> es emitido a partir de PHP 8.3.0,
ya que esto convertirá implícitamente el valor en <type>int</type> en el futuro.
</para>
<para>
El operador de decremento no tiene ningún efecto sobre los strings no numéricos.
Un <constant>E_WARNING</constant> es emitido a partir de PHP 8.3.0,
ya que una <classname>TypeError</classname> será levantada en el futuro.
</para>
</warning>
<note>
<para>
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 <classname>GMP</classname>.
</para>
</note>
</para>
<sect2 xml:id="language.operators.increment.string">
<title>Funcionalidad de incremento de strings PERL</title>
<warning>
<simpara>
Esta funcionalidad es deprecada de manera suave a partir de PHP 8.3.0.
La función <function>str_increment</function> debe ser utilizada en su lugar.
</simpara>
</warning>
<para>
Es posible incrementar un
<link linkend="language.types.numeric-strings">string no numérico</link>
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
<literal>Z</literal>, el incremento se reporta al valor a la izquierda.
Por ejemplo, <code>$a = 'Z'; $a++;</code> transforma <varname>$a</varname>
en <literal>'AA'</literal>.
</para>
<example>
<title>Ejemplo de incremento de string PERL</title>
<programlisting role="php">
<![CDATA[
<?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;
}
?>
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
== Strings alfabéticos ==
X
Y
Z
AA
AB
AC
== Strings alfanuméricos ==
A9
B0
B1
B2
B3
B4
A09
A10
A11
A12
A13
A14
]]>
</screen>
</example>
<warning>
<para>
Si el string alfanumérico puede ser interpretado como un
<link linkend="language.types.numeric-strings">string numérico</link>,
será convertido en <type>int</type> o en <type>float</type>.
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 <function>str_increment</function> no sufre de
estas conversiones de tipo implícitas.
</para>
<example>
<title>Conversión de string alfanumérico a flotante</title>
<programlisting role="php">
<![CDATA[
<?php
$s = "5d9";
var_dump(++$s);
var_dump(++$s);
?>
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
string(3) "5e0"
float(6)
]]>
</screen>
<para>
Esto se debe a que el valor <literal>"5e0"</literal> es interpretado
como un <type>float</type> y convertido en el valor <literal>5.0</literal>
antes de ser incrementado.
</para>
</example>
</warning>
</sect2>
</sect1>