PHP - Variables asignadas por referncia

   
Vista:

Variables asignadas por referncia

Publicado por enrique (1 intervención) el 28/04/2010 01:15:43
Que tal, soy principiante en programacion en PHP y navegando por la red me encontr con este ejemplo de variables asignadas por referencia:

<?php
$foo = 'Bob'; // Asigna el valor 'Bob' a $foo
$bar = &$foo; // Referencia $foo vía $bar.
$bar = "Mi nombre es $bar"; // Modifica $bar...
echo $foo; // $foo también se modifica.
echo $bar;
?>

y la verdad no entendi por que a la hora de ejecutar el script se repite el mensaje "MinombreesBobMinombreesBob". En las dos primeras 2 lineas no tengo problema, primero se declara el valor de la variable $foo='Bob' y posteriormente se declara que la variable $bar haga referencia al valor de la variable $foo. Pero en la linea donde se cambia el valor de la variable $bar (el valor al que hacia referencia) por la cadena "Mi nombre es $bar" porque php sigue tomando dentro de esta cadena que $bar tiene como valor la referencia al valor de la variable $foo??? y porque a la hora que se pide que se muestre el valor de la variable $foo, este tiene como valor "Mi nombre es Bob", el valor de $foo debe ser "Bob"???

Sin mas por el momento me despido esperando que me puedan explicar el porque

Saludos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Variables asignadas por referncia

Publicado por Diego Romero (1450 intervenciones) el 28/04/2010 10:54:10
$foo ocupa un lugar en la memoria, ¿cierto?, cuando haces:

$bar = &$foo;

Lo que estás haciendo es que $bar ocupe exactamente el mismo lugar que $foo, para todo caso práctico, $foo y $bar son el mismo lugar en la memoria.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Variables asignadas por referencia

Publicado por langelhc (1 intervención) el 11/11/2011 16:17:18
hola, espero te sirva:

* son diferentes nombres para la misma cosa. Php tiene una tabla de valores, más o menos así:
*
* Valor | Nombre(s)
*
* y cada valor puede tener diferentes nombres. Cuando declaras una variable normalmente pasa esto:
*
* $foo = "Bob";
* $bar = $foo;
*
* Valor | Nombre(s)
* "Bob" | $foo
* "Bob" | $bar
*
* Pero cuando haces una variable por referencia pasa otra cosa:
*
* $foo = "Bob";
* $bar = &$foo;
*
* Valor | Nombre(s)
* "Bob" | $foo, $bar
*
* Lo cual quiere decir que cuando cambies el valor, va a cambiar tanto para $foo como para $bar.
*
* Cuando haces
*
* $bar = "Mi nombre es $bar";
*
* Primero php mira el valor que está representado por $bar, que hasta ese momento es "Bob",
* así que completa la frase a "Mi nombre es Bob" y entonces hace el cambio:
*
* Valor | Nombre(s)
* "Mi nombre es Bob" | $foo, $bar
*
* Así que cuando haces echo $foo o echo $bar imprime lo mismo
* ================================================================================
* Fuente: http://mx.answers.yahoo.com/question/index?qid=20100427164526AATbpZP
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar