¿Cuál es el propósito de usar y antes del argumento de una función?

Vi algunas declaraciones de funciones como esta:

function boo(&$var){ ... } 

¿Qué hace el & carácter?

Es un pase por referencia. La variable dentro de la función “apunta” a los mismos datos que la variable del contexto de llamada.

 function foo(&$bar) { $bar = 1; } $x = 0; foo($x); echo $x; // 1 

Básicamente, si cambias $var dentro de la función, se cambiará afuera. Por ejemplo:

 $var = 2; function f1(&$param) { $param = 5; } echo $var; //outputs 2 f1($var); echo $var; //outputs 5 

Acepta una referencia a una variable como parámetro.

Esto significa que cualquier cambio que la función realice en el parámetro (por ejemplo, $var = "Hi!" ) Afectará la variable pasada por la función de llamada.

Se pasa por referencia .

Si está familiarizado con los punteros C, es como pasar un puntero a la variable.

Excepto que no hay necesidad de desreferenciarlo (como C).

está pasando $ var como referencia, lo que significa que el valor real de $ var se actualiza cuando se modifica dentro de la función boo

ejemplo:

 function boo(&$var) { $var = 10; } $var = 20; echo $var; //gets 20 boo($var); echo $var //gets 10 

El signo “&” (&) antes de una variable (& $ foo) anula el paso por valor para especificar que desea pasar la variable por referencia en su lugar.

Por ejemplo si tienes esto:

 function doStuff($variable) { $variable++; } $foo = 1; doStuff($foo); echo $foo; // output is '1' because you passed the value, but it doesn't alter the original variable doStuff( &$foo ); // this is deprecated and will throw notices in PHP 5.3+ echo $foo; // output is '2' because you passed the reference and php will alter the original variable. 

Funciona en ambos sentidos.

 function doStuff( &$variable) { $variable++; } $foo = 1; doStuff($foo); echo $foo; // output is '2' because the declaration of the function requires a reference. 

Si alguna función comienza con un símbolo comercial (&), significa su llamada por función de referencia. Devolverá una referencia a una variable en lugar del valor.

 function reference_function( &$total ){ $extra = $total + 10; } $total = 200; reference_function($total) ; echo $total; //OutPut 210