<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/language.variables.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'es',
  ),
  'this' => 
  array (
    0 => 'language.variables.basics.php',
    1 => 'Conceptos b&aacute;sicos',
    2 => 'Conceptos b&aacute;sicos',
  ),
  'up' => 
  array (
    0 => 'language.variables.php',
    1 => 'Variables',
  ),
  'prev' => 
  array (
    0 => 'language.variables.php',
    1 => 'Variables',
  ),
  'next' => 
  array (
    0 => 'language.variables.predefined.php',
    1 => 'Variables Predefinidas',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'es',
    'path' => 'language/variables.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="language.variables.basics" class="sect1">
   <h2 class="title">Conceptos básicos</h2>

   <p class="simpara">
    En PHP las variables se representan con un signo de dólar seguido por el
    nombre de la variable. El nombre de la variable es sensible a minúsculas y mayúsculas.
   </p>

   <p class="para">
    Un nombre de variable válido tiene que empezar con una letra
    (<code class="literal">A-Z</code>, <code class="literal">a-z</code>, o los bytes del 128 al 255)
    o un carácter de subrayado (underscore), seguido
    de cualquier número de letras, números y caracteres de subrayado. Como
    expresión regular se podría expresar como:
    <code class="code">^[a-zA-Z_\x80-\xff][a-zA-Z0-9_\x80-\xff]*$</code>
   </p>

   <blockquote class="note"><p><strong class="note">Nota</strong>: 
    <span class="simpara">
     PHP no soporta Unicode en el nombre de las variables, sin embargo, algunas codificaciones
     de caracteres (como UTF-8) codifican caracteres de tal manera que todos los bytes
     de un carácter multibyte están dentro del rango permitido, convirtiéndolo así
     en un nombre de variable válido.
    </span>
   </p></blockquote>

   <blockquote class="note"><p><strong class="note">Nota</strong>: 
    <span class="simpara">
     <code class="literal">$this</code> es una variable especial que no puede ser
     asignada.
     Antes de PHP 7.1.0, era posible la asignación indirecta (por ejemplo,
     mediante el uso de <a href="language.variables.variable.php" class="link">variables variables</a>).
    </span>
   </p></blockquote>

   <div class="tip"><strong class="tip">Sugerencia</strong><p class="simpara">
 Eche un vistazo a <a href="userlandnaming.php" class="xref">Gu&iacute;a de entorno de usuario para nombres</a>.
</p></div>

   <div class="example" id="example-1">
    <p><strong>Ejemplo #1 Valid variable names</strong></p>
    <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$var </span><span style="color: #007700">= </span><span style="color: #DD0000">'Roberto'</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$Var </span><span style="color: #007700">= </span><span style="color: #DD0000">'Juan'</span><span style="color: #007700">;<br />echo </span><span style="color: #DD0000">"</span><span style="color: #0000BB">$var</span><span style="color: #DD0000">, </span><span style="color: #0000BB">$Var</span><span style="color: #DD0000">"</span><span style="color: #007700">;      </span><span style="color: #FF8000">// Imprime "Roberto, Juan"<br /><br /></span><span style="color: #0000BB">$_4site </span><span style="color: #007700">= </span><span style="color: #DD0000">'aún no'</span><span style="color: #007700">;     </span><span style="color: #FF8000">// Válido; comienza con un carácter de subrayado<br /></span><span style="color: #0000BB">$täyte </span><span style="color: #007700">= </span><span style="color: #DD0000">'mansikka'</span><span style="color: #007700">;    </span><span style="color: #FF8000">// Válido; 'ä' es ASCII (Extendido) 228<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
    </div>

   </div>

   <div class="example" id="example-2">
    <p><strong>Ejemplo #2 Invalid variable names</strong></p>
    <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /></span><span style="color: #007700">$</span><span style="color: #0000BB">4site </span><span style="color: #007700">= </span><span style="color: #DD0000">'aún no'</span><span style="color: #007700">;     </span><span style="color: #FF8000">// Inválido; comienza con un número</span></span></code></div>
    </div>

   </div>

   <p class="simpara">
    PHP acepta una secuencia de bytes como nombre de variable. Los nombres de
    variables que no siguen las reglas de nombres mencionadas anteriormente
    solo pueden accederse de forma dinámica en tiempo de ejecución. Consulte
    <a href="language.variables.variable.php" class="link">variables variables</a>
    para obtener información sobre cómo acceder a ellas.
   </p>

   <div class="example" id="example-3">
    <p><strong>Ejemplo #3 Cómo acceder a nombres de variables con caracteres no válidos</strong></p>
    <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /></span><span style="color: #007700">${</span><span style="color: #DD0000">'invalid-name'</span><span style="color: #007700">} = </span><span style="color: #DD0000">'bar'</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$name </span><span style="color: #007700">= </span><span style="color: #DD0000">'invalid-name'</span><span style="color: #007700">;<br />echo ${</span><span style="color: #DD0000">'invalid-name'</span><span style="color: #007700">}, </span><span style="color: #DD0000">" "</span><span style="color: #007700">, $</span><span style="color: #0000BB">$name</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
    </div>

    <div class="example-contents"><p>El ejemplo anterior mostrará:</p></div>
    <div class="example-contents screen">
<div class="cdata"><pre>
bar bar
</pre></div>
    </div>
   </div>

   <p class="para">
    Por omisión, las variables siempre se asignan por valor. Esto
    significa que cuando se asigna una expresión a una variable, el valor
    completo de la expresión original se copia en la variable de destino.
    Esto quiere decir que, por ejemplo, después de asignar el valor de una
    variable a otra, los cambios que se efectúen a una de esas variables no
    afectará a la otra. Para más información sobre este tipo de asignación,
    vea  el capítulo sobre <a href="language.expressions.php" class="link">Expresiones</a>.
   </p>
   <p class="para">
    PHP también ofrece otra forma de asignar valores a las variables:
    <a href="language.references.php" class="link">asignar por referencia</a>. Esto
    significa que la nueva variable simplemente referencia (en otras
    palabras, &quot;se convierte en un alias de&quot; ó &quot;apunta a&quot;) la variable
    original. Los cambios a la nueva variable afectan a la original, y
    viceversa.
   </p>
   <p class="para">
    Para asignar por referencia, simplemente se antepone un signo ampersand
    (&amp;) al comienzo de la variable cuyo valor se está asignando (la
    variable fuente). Por ejemplo, el siguiente segmento de código produce la
    salida &#039;<code class="literal">Mi nombre es Bob</code>&#039; dos veces:

    <div class="informalexample">
     <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$foo </span><span style="color: #007700">= </span><span style="color: #DD0000">'Bob'</span><span style="color: #007700">;                </span><span style="color: #FF8000">// Asigna el valor 'Bob' a $foo<br /></span><span style="color: #0000BB">$bar </span><span style="color: #007700">= &amp;</span><span style="color: #0000BB">$foo</span><span style="color: #007700">;                </span><span style="color: #FF8000">// Referenciar $foo vía $bar.<br /></span><span style="color: #0000BB">$bar </span><span style="color: #007700">= </span><span style="color: #DD0000">"Mi nombre es </span><span style="color: #0000BB">$bar</span><span style="color: #DD0000">"</span><span style="color: #007700">;  </span><span style="color: #FF8000">// Modifica $bar...<br /></span><span style="color: #007700">echo </span><span style="color: #0000BB">$bar</span><span style="color: #007700">;<br />echo </span><span style="color: #0000BB">$foo</span><span style="color: #007700">;                   </span><span style="color: #FF8000">// $foo también se modifica.<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
     </div>

    </div>
   </p>

   <p class="para">
    Algo importante a tener en cuenta es que sólo las variables con nombre
    pueden ser asignadas por referencia.
    <div class="informalexample">
     <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$foo </span><span style="color: #007700">= </span><span style="color: #0000BB">25</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$bar </span><span style="color: #007700">= &amp;</span><span style="color: #0000BB">$foo</span><span style="color: #007700">;      </span><span style="color: #FF8000">// Esta es una asignación válida.<br /></span><span style="color: #0000BB">$bar </span><span style="color: #007700">= &amp;(</span><span style="color: #0000BB">24 </span><span style="color: #007700">* </span><span style="color: #0000BB">7</span><span style="color: #007700">);  </span><span style="color: #FF8000">// Inválida; referencia una expresión sin nombre.<br /><br /></span><span style="color: #007700">function </span><span style="color: #0000BB">test</span><span style="color: #007700">()<br />{<br />   return </span><span style="color: #0000BB">25</span><span style="color: #007700">;<br />}<br /><br /></span><span style="color: #0000BB">$bar </span><span style="color: #007700">= &amp;</span><span style="color: #0000BB">test</span><span style="color: #007700">();    </span><span style="color: #FF8000">// Inválido porque test() no devuelve una variable por referencia.<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
     </div>

    </div>
   </p>

   <p class="para">
    No es necesario inicializar variables en PHP, sin embargo, es una muy buena práctica.
    El acceso a una variable no definida generará un <strong><code><a href="errorfunc.constants.php#constant.e-warning">E_WARNING</a></code></strong>
    (en versiones anteriores a PHP 8.0.0, <strong><code><a href="errorfunc.constants.php#constant.e-notice">E_NOTICE</a></code></strong>).
    Una variable no definida tiene un valor predeterminado de <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong>.
    Se puede utilizar la construcción del lenguaje <span class="function"><a href="function.isset.php" class="function">isset()</a></span>
    para detectar si una variable ya se ha inicializado.
   </p>
   <p class="para">
    <div class="example" id="example-4">
     <p><strong>Ejemplo #4 Valores predeterminados en variables sin inicializar</strong></p>
     <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /></span><span style="color: #FF8000">// Una variable no definida Y no referenciada (sin contexto de uso).<br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">$variable_indefinida</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
     </div>

     <div class="example-contents"><p>El ejemplo anterior mostrará:</p></div>
     <div class="example-contents screen">
<div class="cdata"><pre>
Warning: Undefined variable $unset_var in ...
NULL
</pre></div>
     </div>
    </div>
   </p>

   <p class="simpara">
    PHP permite la autovivificación de array (creación automática de un nuevo array)
    a partir de una variable no definida.
    Añadidiendo un elemento a una variable no definida creará un nuevo array y
    no producirá ninguna advertencia.
   </p>
   <div class="example" id="example-5">
    <p><strong>Ejemplo #5 Autovivification de un array a partir de una variable no definida</strong></p>
    <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$unset_array</span><span style="color: #007700">[] = </span><span style="color: #DD0000">'valor'</span><span style="color: #007700">; </span><span style="color: #FF8000">// No producirá ninguna advertencia.<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
    </div>

   </div>

   <div class="warning"><strong class="warning">Advertencia</strong>
    <p class="simpara">
     Depender del valor predeterminado de una variable sin inicializar
     es problemático al incluir un archivo en otro que use el mismo
     nombre de variable.
    </p>
   </div>

   <p class="simpara">
    Una variable puede ser destruida, utilizando la construcción del lenguaje
    <span class="function"><a href="function.unset.php" class="function">unset()</a></span>.
   </p>

   <p class="simpara">
    Para información con funciones relativas a variables, mira la
    <a href="ref.var.php" class="link">Referencia de funciones de variables</a>.
   </p>
  </div><?php manual_footer($setup); ?>