mirror of
https://github.com/php/doc-es.git
synced 2026-03-23 23:12:09 +01:00
232 lines
5.6 KiB
XML
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>
|