2009-02-28 14 views
18

Nur eine schnelle und ohne Zweifel einfache Frage. Ich bin ziemlich neu in PHP und schaue mir den vorhandenen Code an. Ich habe versucht, die Antwort auf meine Frage auf Google zu finden, aber ohne Erfolg.'&' vor dem Parameternamen

Kann mir jemand bitte sagen, was das '&' Zeichen vor dem Parameter $ var tut ??

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

Antwort

46

Übergibt es als Referenz.

Huh? Wenn Sie als Referenz übergeben, übergeben Sie anstelle des Werts die Adresse der Variablen. Im Grunde machen Sie einen Zeiger auf die Variable.

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

+6

+1 Für ** Huh? **, brachte mich zum Lachen –

1

& mittels Pass-by-reference; In diesem Code wird überprüft, ob die an die Funktion übergebene Variable tatsächlich im globalen Gültigkeitsbereich vorhanden ist. Ohne die & würde es versuchen, eine Kopie der Variablen zuerst zu nehmen, die einen Fehler verursacht, wenn es nicht existiert.

19

Dies bedeutet, dass die Funktion anstelle einer Kopie des Werts den Verweis auf den ursprünglichen Wert des Arguments $var erhält.

Beispiel:

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

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

Wenn add() würde das Und-Zeichen-Zeichen in der Funktionssignatur nicht hat, das Echo würde Ausgang „0“, da der ursprüngliche Wert wurde nie geändert.

2

Dies bedeutet, dass Sie eine Variable durch Referenz http://ca3.php.net/language.references.pass übergeben. Das bedeutet einfach, dass die Funktion eine tatsächliche Variable erhält und keine Kopie der Variablen. Alle Änderungen, die Sie an dieser Variablen in der Funktion vornehmen, werden im Aufrufer gespiegelt.