mirror of
https://github.com/php/doc-es.git
synced 2026-03-23 23:12:09 +01:00
261 lines
7.1 KiB
XML
261 lines
7.1 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<!-- EN-Revision: 16934048f79c6e117cd16a23c09c1b2ea502e284 Maintainer: PhilDaiguille Status: ready -->
|
|
<!-- Reviewed: no -->
|
|
<sect1 xml:id="language.operators.assignment">
|
|
<title>Los operadores de asignación</title>
|
|
<titleabbrev>Asignación</titleabbrev>
|
|
<simpara>
|
|
El operador de asignación más simple es el signo "=".
|
|
El primer reflejo es pensar que este signo significa
|
|
"igual a". No es el caso. Significa que
|
|
el operando de la izquierda se ve asignado el valor de
|
|
la expresión que está a la derecha del signo igual.
|
|
</simpara>
|
|
<para>
|
|
El valor de una expresión de asignación es el valor
|
|
asignado. Por ejemplo, el valor de la expresión
|
|
'<literal>$a = 3</literal>' es el valor 3. Esto permite utilizar
|
|
trucos tales como:
|
|
<example>
|
|
<title>Asignaciones anidadas</title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
$a = ($b = 4) + 5;
|
|
// $a ahora es igual a 9, y $b vale 4.
|
|
var_dump($a);
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
</example>
|
|
</para>
|
|
<para>
|
|
Además del simple operador de asignación, existen
|
|
"operadores combinados" para todos los operadores
|
|
<link linkend="language.operators">aritméticos</link>,
|
|
la unión de arrays y para los operadores sobre los strings.
|
|
Esto permite utilizar el valor de una variable en una expresión y
|
|
asignar el resultado de esta expresión a esta variable.
|
|
Por ejemplo:
|
|
<example>
|
|
<title>Asignaciones Combinadas</title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
$a = 3;
|
|
$a += 5; // asigna el valor 8 a la variable $a corresponde a la instrucción '$a = $a + 5';
|
|
$b = "Hola ";
|
|
$b .= " a todos!"; // asigna el valor "Hola a todos!" a
|
|
// la variable $b
|
|
// idéntico a $b = $b." a todos!";
|
|
|
|
var_dump($a, $b);
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
</example>
|
|
</para>
|
|
<para>
|
|
Se puede observar que la asignación copia el contenido de la variable original
|
|
en la nueva variable (asignación por valor), lo que hace que los
|
|
cambios de valor de una variable no modificarán el valor de
|
|
la otra. Esto puede ser importante al copiar un gran array
|
|
durante un bucle.
|
|
</para>
|
|
<para>
|
|
Una excepción al comportamiento de asignación por valor en PHP es el tipo
|
|
<type>object</type>, estos son asignados por referencia.
|
|
La copia de objeto debe ser explícitamente solicitada gracias al mot-clé
|
|
<link linkend="language.oop5.cloning">clone</link>.
|
|
</para>
|
|
|
|
<sect2 xml:id="language.operators.assignment.reference">
|
|
<title>Asignación por referencia</title>
|
|
<para>
|
|
La asignación por referencia también es soportada, mediante la sintaxis
|
|
"<computeroutput>$var = &$othervar;</computeroutput>". La asignación por
|
|
referencia significa que las dos variables apuntan al mismo contenedor de
|
|
datos, nada es copiado en ningún lugar.
|
|
</para>
|
|
<para>
|
|
<example>
|
|
<title>Asignación por referencia</title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
$a = 3;
|
|
$b = &$a; // $b es una referencia a $a
|
|
|
|
print "$a\n"; // muestra 3
|
|
print "$b\n"; // muestra 3
|
|
|
|
$a = 4; // cambia $a
|
|
|
|
print "$a\n"; // muestra 4
|
|
print "$b\n"; // muestra 4 también, porque $b es una referencia a $a, que ha sido
|
|
// cambiada
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
</example>
|
|
</para>
|
|
<para>
|
|
El operador <link linkend="language.oop5.basic.new">new</link>
|
|
devuelve una referencia automáticamente, por lo tanto, asignar el resultado de
|
|
<link linkend="language.oop5.basic.new">new</link> por referencia es un error
|
|
</para>
|
|
<para>
|
|
<example>
|
|
<title>Nuevo operador por referencia</title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
class C {}
|
|
|
|
$o = &new C;
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
&example.outputs;
|
|
<screen>
|
|
<![CDATA[
|
|
Parse error: syntax error, unexpected token ";", expecting "("
|
|
]]>
|
|
</screen>
|
|
</example>
|
|
</para>
|
|
<para>
|
|
Más información sobre las referencias y sus usos posibles pueden ser
|
|
encontrados en la sección del manual <link linkend="language.references">Las referencias
|
|
explicadas</link>.
|
|
</para>
|
|
</sect2>
|
|
|
|
<sect2 xml:id="language.operators.assignment.arithmetic">
|
|
<title>Los operadores de asignación aritméticos</title>
|
|
<informaltable>
|
|
<tgroup cols="3">
|
|
<thead>
|
|
<row>
|
|
<entry>Ejemplo</entry>
|
|
<entry>Equivalente</entry>
|
|
<entry>Operación</entry>
|
|
</row>
|
|
</thead>
|
|
<tbody>
|
|
<row>
|
|
<entry>$a += $b</entry>
|
|
<entry>$a = $a + $b</entry>
|
|
<entry>Adición</entry>
|
|
</row>
|
|
<row>
|
|
<entry>$a -= $b</entry>
|
|
<entry>$a = $a - $b</entry>
|
|
<entry>Sustracción</entry>
|
|
</row>
|
|
<row>
|
|
<entry>$a *= $b</entry>
|
|
<entry>$a = $a * $b</entry>
|
|
<entry>Multiplicación</entry>
|
|
</row>
|
|
<row>
|
|
<entry>$a /= $b</entry>
|
|
<entry>$a = $a / $b</entry>
|
|
<entry>División</entry>
|
|
</row>
|
|
<row>
|
|
<entry>$a %= $b</entry>
|
|
<entry>$a = $a % $b</entry>
|
|
<entry>Módulo</entry>
|
|
</row>
|
|
<row>
|
|
<entry>$a **= $b</entry>
|
|
<entry>$a = $a ** $b</entry>
|
|
<entry>Exponenciación</entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</informaltable>
|
|
</sect2>
|
|
|
|
<sect2 xml:id="language.operators.assignment.bitwise">
|
|
<title>Operadores de asignación bits a bits</title>
|
|
<informaltable>
|
|
<tgroup cols="3">
|
|
<thead>
|
|
<row>
|
|
<entry>Ejemplo</entry>
|
|
<entry>Equivalente</entry>
|
|
<entry>Operación</entry>
|
|
</row>
|
|
</thead>
|
|
<tbody>
|
|
<row>
|
|
<entry>$a &= $b</entry>
|
|
<entry>$a = $a & $b</entry>
|
|
<entry>Operador And</entry>
|
|
</row>
|
|
<row>
|
|
<entry>$a |= $b</entry>
|
|
<entry>$a = $a | $b</entry>
|
|
<entry>Operador Or</entry>
|
|
</row>
|
|
<row>
|
|
<entry>$a ^= $b</entry>
|
|
<entry>$a = $a ^ $b</entry>
|
|
<entry>Operador Xor</entry>
|
|
</row>
|
|
<row>
|
|
<entry>$a <<= $b</entry>
|
|
<entry>$a = $a << $b</entry>
|
|
<entry>Desplazamiento a la izquierda</entry>
|
|
</row>
|
|
<row>
|
|
<entry>$a >>= $b</entry>
|
|
<entry>$a = $a >> $b</entry>
|
|
<entry>Desplazamiento a la derecha</entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</informaltable>
|
|
</sect2>
|
|
|
|
<sect2 xml:id="language.operators.assignment.other">
|
|
<title>Otros operadores de asignación</title>
|
|
<informaltable>
|
|
<tgroup cols="3">
|
|
<thead>
|
|
<row>
|
|
<entry>Ejemplo</entry>
|
|
<entry>Equivalente</entry>
|
|
<entry>Operación</entry>
|
|
</row>
|
|
</thead>
|
|
<tbody>
|
|
<row>
|
|
<entry>$a .= $b</entry>
|
|
<entry>$a = $a . $b</entry>
|
|
<entry>Concatenación de un string</entry>
|
|
</row>
|
|
<row>
|
|
<entry>$a ??= $b</entry>
|
|
<entry>$a = $a ?? $b</entry>
|
|
<entry>Operador de coalescencia nul</entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</informaltable>
|
|
</sect2>
|
|
|
|
<sect2 role="seealso" xml:id="language.operators.assignment.see-also">
|
|
&reftitle.seealso;
|
|
<para>
|
|
<simplelist>
|
|
<member><link linkend="language.operators.arithmetic">los operadores aritméticos</link></member>
|
|
<member><link linkend="language.operators.bitwise">los operadores bits a bits</link></member>
|
|
<member><link linkend="language.operators.comparison.coalesce">los operadores de coalescencia nul</link></member>
|
|
</simplelist>
|
|
</para>
|
|
</sect2>
|
|
</sect1>
|