2009-02-28 9 views
18

Po prostu szybkie i bez wątpienia łatwe pytanie. Jestem całkiem nowym użytkownikiem PHP i przeglądam niektóre istniejące kody. Próbowałem znaleźć odpowiedź na moje pytanie w google, ale bez skutku.'&' przed nazwą parametru

Czy może ktoś proszę dać mi znać o znaku "&" przed parametrem $ var?

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

Odpowiedz

1

& środki przekazywany przez odniesienie; to, co robi ten kod, to sprawdzenie, czy zmienna przekazana do funkcji faktycznie istnieje w zasięgu globalnym. Bez & spróbuje najpierw pobrać kopię zmiennej, co spowoduje błąd, jeśli nie istnieje.

19

Oznacza to, że funkcja otrzymuje odwołanie do oryginalnej wartości argumentu $var zamiast do kopii wartości.

Przykład:

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

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

Jeśli add() nie miałby ampersand-znak w podpisie funkcji, echo byłoby wyjście „0”, ponieważ oryginalna wartość nigdy nie została zmieniona.

2

Oznacza to, że przekazujesz zmienną przez odniesienie http://ca3.php.net/language.references.pass. Po prostu oznacza to, że funkcja otrzymuje aktualną zmienną, a nie kopię zmiennej. Wszelkie zmiany wprowadzone w tej zmiennej w funkcji będą dublowane w wywołującym.

Powiązane problemy