2010-11-14 13 views
6

estoy 'disección' PunBB, y una de sus funciones comprueba la estructura de etiquetas BBCode y corregir errores simples que sea posible:¿Qué significa & Sign significa frente a una variable?

function preparse_tags($text, &$errors, $is_signature = false) 

¿Qué significa el & delante de la variable $error quiere decir?

+0

posible duplicado de [PHP: ¿Qué significa una & delante de un nombre de variable?] (Http://stackoverflow.com/questions/3774130/php-what-does-a-in-front-of-a -nombre de variable-valor) – nbro

Respuesta

22

Significa pass the variable by reference, en lugar de pasar el valor de la variable. Esto significa que cualquier cambio en ese parámetro en la función preparse_tags se mantendrá cuando el flujo del programa regrese al código de llamada.

function passByReference(&$test) { 
    $test = "Changed!"; 
} 

function passByValue($test) { 
    $test = "a change here will not affect the original variable"; 
} 

$test = 'Unchanged'; 
echo $test . PHP_EOL; 

passByValue($test); 
echo $test . PHP_EOL; 

passByReference($test); 
echo $test . PHP_EOL; 

Salida:

Sin cambios

Sin cambios

cambiado!

+0

Buena respuesta, pero ofrecería la función passByValue ($ test) solo para contrarrestarla. No es necesario, pero definitivamente es útil para alguien que tropieza con la pregunta más tarde. – pinkfloydx33

+0

¡Gran respuesta - ejemplo rápido, fácil y excelente! +1 –

1

Acepta una referencia a una variable como parámetro.

Esto significa que cualquier cambio que la función realice en el parámetro (p. Ej., $errors = "Error!") afectará a la variable pasada por la función de llamada.

2

Pasa por referencia en lugar de pasar por valor.

Esto permite que la función cambie variables fuera de su propio alcance, en el ámbito de la función de llamada.

Por ejemplo:

function addOne(&$val) { 
    $val++; 
} 
$a = 1; 
addOne($a); 
echo $a; // Will echo '2'. 

En el caso de la función preparse_tags, que permite que la función retorne las etiquetas analizados, pero permiten que el padre de llamadas para obtener los errores sin tener que comprobar el formato/tipo de el valor devuelto

0

Significa que la variable pasada en la posición de errores será modificada por la función llamada. Vea this para una vista detallada.