Foros del Web » Programando para Internet » PHP »

Parámetros por valor y referencia...

Estas en el tema de Parámetros por valor y referencia... en el foro de PHP en Foros del Web. Hola amigos, que tal?? Estaba empezando a leer manuales de PHP, que subieron por este gran foro...muy bueno por cierto...y me encontré con que las ...
  #1 (permalink)  
Antiguo 11/02/2008, 22:31
 
Fecha de Ingreso: diciembre-2007
Ubicación: Frente al ordenador...
Mensajes: 139
Antigüedad: 16 años, 4 meses
Puntos: 1
Pregunta Parámetros por valor y referencia...

Hola amigos, que tal?? Estaba empezando a leer manuales de PHP, que subieron por este gran foro...muy bueno por cierto...y me encontré con que las funciones permiten recibir parámetros por valor y referencia, algo ya había escuchado sobre eso...pero la verdad no me queda muy claro...lo que si estoy seguro es que por referencia es importantisimo conocerlo muy bien...pero no le entiendo mucho...alguien que me pueda explicar casi creo con manzanas o peras...como gusten ;)
O algun link donde expliquen muy bien eso...se los agradeceria bastante...
  #2 (permalink)  
Antiguo 12/02/2008, 06:03
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Re: Parámetros por valor y referencia...

Para entender la diferencia hay que saber lo que es un puntero
Sin entrar mucho en detalles, cuando creás una variable y le asignás un valor tenés 2 cosas

- el valor asignado
- la dirección de memoria en la que se almacena dicho valor.

La variable en realidad no contiene datos, sino que "sabe" la dirección de memoria en la que esos datos están almacenados.

Así, cuando se pasa por valor se copian los datos: se toman de la memoria y se almacenan en otro lugar, luego se asigna a la variable la referencia a esos nuevos datos.

Y cuando se pasa por referencia se copia, justamente, la referencia a la posición de memoria. Así, como la variable de la función apunta a la misma memoria, apunta a los mismos datos y por lo tanto puede modificar la variable original.

Supongamos que tenés la variable

$x = 5;

y la pasás a una función

mi_funcion($x);

Si el paso es por valor, la función tendrá una firma como la siguiente

function mi_funcion($parametro)

Y al momento de ejecutarse se creará la variable $parametro, a la que se asignará el valor de $x. Es decir, los datos almacenados en la dirección de memoria a la que apunta $x serán copiados a otra posición de memoria, y a esa nueva posición apuntará $parametro.

Si el paso es por referencia, la función tiene una firma como esta:

function mi_funcion(&$parametro)

Esto implica que al momento de ejecutarse la función, tanto $x como $parametro terminan apuntando a los mismos datos (claro está, $parametro solamente existe mientras la función se ejecuta). Normalmente la función no puede modificar la variable original, pero sí puede hacerlo si el paso es por referencia.

Veamos este código:

Código PHP:

function duplicar($parametro) {
    
$parametro *= 2;
}

$x 10;

duplicar($x);

echo 
$x
Produce la salida "10", mientras que

Código PHP:

function duplicar(&$parametro) {
    
$parametro *= 2;
}

$x 10;

duplicar($x);

echo 
$x
Produce la salida "20". Por eso es que "es importantisimo conocerlo muy bien".


Espero que te haya resultado claro


Saludos.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 3 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 21:34.