2009-02-28 23 views
18

Solo una domanda rapida e senza dubbio facile. Sono piuttosto nuovo di PHP e sto guardando attraverso un codice esistente. Ho cercato di trovare la risposta alla mia domanda su google, ma senza risultato.'&' prima del nome del parametro

Qualcuno può farmi sapere che cos'è il segno "&" prima del parametro $ var ??

function setdefault(&$var, $default="") 
{ 
    if (! isset($var)) 
    { 
    $var = $default; 
    } 
} 

risposta

46

Passa per riferimento.

Eh? Il passaggio per riferimento indica che si passa l'indirizzo della variabile anziché il valore. Fondamentalmente stai facendo un puntatore alla variabile.

http://us.php.net/language.references.pass

+6

+1 Per ** Huh? **, mi ha fatto ridere –

1

& mezzi passaggio per riferimento; ciò che fa questo codice è controllare se la variabile passata alla funzione esiste effettivamente nello scope globale. Senza lo & proverebbe prima a prendere una copia della variabile, che causa un errore se non esiste.

19

Significa che la funzione ottiene il riferimento al valore originale dell'argomento $var, anziché una copia del valore.

Esempio:

function add(&$num) { $num++; } 

$number = 0; 
add($number); 
echo $number; // this outputs "1" 

Se add() non avrebbe la e commerciale-segno nella firma di funzione, l'eco sarebbe uscita "0", perché il valore originale è stato mai cambiato.

2

Ciò significa che si sta passando una variabile tramite il riferimento http://ca3.php.net/language.references.pass. Semplicemente questo significa che la funzione sta diventando una variabile reale e non una copia della variabile. Qualsiasi modifica apportata a tale variabile nella funzione verrà rispecchiata nel chiamante.

Problemi correlati