2011-01-18 19 views
6

Duplicar posible:
Reference - What does this symbol mean in PHP?php usando 'y' operador

Hola tengo problemas para entender algunos de los & el uso del operador. que he encontrado con varios ejemplos y señalar sólo los générale que no sé lo que realmente hacen ...

lo que significa cuando estoy:

1) usando & en nombre de la función

function &foo() {} 

2) usando & en el parámetro función

function foo($id, &$desc) {} 

3) usgin & en bucle

foreach ($data as $key => &$item) {} 

Respuesta

6
function &foo() {} 

Devuelve una variable por referencia al llamar al foo().

function foo($id, &$desc) {} 

toma un valor como primer parámetro $id y una referencia como el segundo parámetro $desc. Si $desc se modifica dentro de la función, la variable que pasa el código de llamada también se modifica.

Las dos primeras preguntas son respondidas por mí en mayor detalle con ejemplos más claros here.

Y esto:

foreach ($data as $key => &$item) {} 

Usos foreach para modificar los valores de una matriz por referencia. La referencia apunta a los valores dentro de la matriz, de modo que cuando los modifique, también cambie la matriz. Si no necesita conocer la clave dentro de su ciclo, también puede omitir $key =>.

+0

Al usar 'foreach' con una referencia, nunca olvide que la referencia sigue apuntando al último elemento después del bucle. Siempre 'unset()' para evitar problemas (por ejemplo, asignando a una var con el mismo nombre más tarde, haciendo que el último elemento de la matriz se modifique). – ThiefMaster

2

El PHP manual tiene una gran sección de referencias (el operador &) explicando cuáles son y cómo usarlas.

En sus ejemplos particulares:

1) es un retorno por referencia. Debe utilizar el & al llamar a la función y al declararla, como lo hizo anteriormente: Return by Reference

2) Pasa un parámetro por referencia. Solo necesita usar el & en la definición de función, no al llamar a la función: Passing by Reference

3) Está utilizando una referencia en un bucle foreach. Esto le permite modificar el valor de $ item dentro de la matriz de origen cuando se encuentra dentro del ciclo.

Toda la información completa sobre las referencias de PHP es available in the manual.