Ver Mensaje Individual
  #300 (permalink)  
Antiguo 23/04/2011, 14:34
Avatar de abimaelrc
abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: Juego: "¿Dónde está el error?"

Bueno, bueno la razón por la que
Código PHP:
Ver original
  1. <?php
  2. $a = array('foo');
  3. $b =& $a[0];
  4. print_r($a) . ' - ' . print_r($b);
  5. echo '<br />';
  6. $c = $a;
  7. $c[0] = 'bar';
  8. print_r($a) . ' - ' . print_r($b);
  9. echo '<br />';
$c puede modificar a las referencia es que los array guardan las referencia.

Explicado mejor: En referencias "comunes" como indicar
Código PHP:
Ver original
  1. $a = 'foo';
  2. $b =& $a;
las referencias no persisten, solo son asignadas a las variables que van a estar mirando el mismo punto.

Pero cuando se hace referencia a un valor en el array
Código PHP:
Ver original
  1. $a = array('foo');
  2. $b =& $a[0];
Cuando voy a asignar a otra variable
Código PHP:
Ver original
  1. $c = $a;
estoy llevando todo lo que contenga el array y con ello la referencia. Por eso, si yo hago un cambio a ese valor en específico que tiene la referencia
Código PHP:
Ver original
  1. $c[0] = 'bar';
Se modifica la referencia, porque los array mantienen la referencia (tienen persistencia), es como decir que los array son portables con todos los elementos que tienen en su interior.

Si hubiera tomado la referencia directamente
Código PHP:
Ver original
  1. $c = $a[0];
  2. $c = 'bar';
No se modifica la referencia porque la estoy declarando como "comunmente" se llamaría, en forma directa, no con un contenedor como lo haría el array.

Dejo a otro que haga el reto
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos