Ver Mensaje Individual
  #1 (permalink)  
Antiguo 18/08/2005, 17:19
$thisone
 
Fecha de Ingreso: agosto-2005
Mensajes: 143
Antigüedad: 18 años, 8 meses
Puntos: 0
Paso de parámetros por referencia

Holas.
Llevo un tiempo como visitante en el foro y porfin he decidido registrarme :)

Bueno, a lo que voy...
El problema que está a la hora de comprender las referencias.

Antes de seguir quiero saber si tengo los conceptos claros(que puede que aquí esté mi error). Espero saber explicarme.
Código PHP:
<?php
$a 
=& $b;
?>
En este caso $a y $b apuntan al mismo sitio de memoria ¿no?

Bueno. Donde realmente creo que tengo el problema de comprensión es en el paso de parametros por referencia.
Este es el punto que me gustaría que me explicarais :)

Pongo como yo creo que funciona esto:
Código PHP:
<?php
function algo($var)
{
    
$var++;
}
$a 5;
echo 
algo($a);
?>
Aqui no pasamos por referencia y lo que yo creo que pasa es que imprime en pantalla 6 pero la variable $a sigue valiendo 5;
Para todo esto se supone que en memoria se ocupa mas espacio que si lo hacemos por referencia. Por que la funcion algo() tiene una variable local que almacena el dato que le pasamos y realiza una operación con el y ese valor que le datos tiene que estar en alguna parte.
Entonces pienso que al pasarlo por referencia lo que hacemos esque esa función no cree la variable $var para realizar las operaciones sino que use la memoria en la que esta almacenado el valor de $a.

¿Se me ha entendido lo que quiero decir? Estoy en lo cierto ¿no?

Con lo cual en el script siguiente se usaria menos memoria y realizaria la misma función que el anterior(si no me equivoco)
Código PHP:
<?php
function algoref(&$var)
{
    
$var++;
}
$a 5;
echo 
algoref($a);
?>
Eso es una buena explicación para que $a despues de pasarle la función algoref() tenga el valor de 6. PORQUE LA FUNCION HA ESCRITO EN LA MEMORIA DE $a Y NO HA CREADO OTRA VARIABLE!!! xDD
Asi es como creo que esto funciona.

Mi duda es si estoy en lo cierto ¿?


Siento escribir un tema tan largo pero esque requiere una explicación completa por mi parte. Creo que en este foro hay gente que seguro que sabe responderme a mis preguntas :)

Gracias por leerlo y espero alguna respuesta :)