2010-09-22 63 views
29

¿Qué significa un & delante de un nombre de variable?PHP: ¿Qué significa un & delante de un nombre de variable?

Por ejemplo & $ salario vs. $ salario

+3

Leer: http://php.net/manual/en/language.references.php – NullUserException

+3

No es un tema difícil de encontrar símbolos de referencia para PHP (que no se puede buscar fácilmente en SO): http://stackoverflow.com/questions/3737139/reference-what-does-this-symbol-mean-in-php – Wrikken

+0

posible duplicado de [Php por referencia] (http: // stackoverflow. com/questions/475990/php-by-reference) –

Respuesta

52

Pasa una referencia a la variable por lo que cuando se edita cualquier variable asignada, se cambia la variable original. Son realmente útiles al hacer funciones que actualizan una variable existente. En lugar de codificar con dureza qué variable se actualiza, simplemente puede pasar una referencia a la función.

Ejemplo

<?php 
    $number = 3; 
    $pointer = &$number; // Sets $pointer to a reference to $number 
    echo $number."<br/>"; // Outputs '3' and a line break 
    $pointer = 24;  // Sets $number to 24 
    echo $number;   // Outputs '24' 
?> 
+1

Pregunta rápida, ¿cuándo y por qué debería usar esto en lugar de asignarle un nuevo valor a la variable? Algo como esto: '$ number = 3; echo $ number; // Salidas 3 $ número = 5; echo $ number; // Salidas 5' –

+0

Un ejemplo sería cuando quiere pasar la referencia a una función. De esta forma, los valores originales se actualizan en lugar de la variable local de la función. – GoogleMac

0

Se utiliza para pasar un objeto por referencia.

Consulte this entry en la documentación de PHP.

+2

solo ** objetos **? puede ser la palabra más apropiada es "variable"? – zerkms

+0

¿Qué significa "eco $ a-> foo"? –

+1

Los objetos se pasan por referencia de forma predeterminada en PHP5 de todos modos, por lo que no es necesario el 'y' cuando se trata de objetos. @user, obtiene el parámetro 'foo' del objeto asignado a la variable' $ a' –

2

Es una referencia, al igual que en otros lenguajes como C++. Hay una sección en el documentation al respecto.

Cuestiones relacionadas