2009-02-28 128 views
18

只是一个快速和毫无疑问容易的问题。我对PHP很陌生,正在浏览一些现有的代码。我试图找到在谷歌我的问题的答案,但无济于事。'&'参数名称前

有人请让我知道'&'符号在参数$ var之前吗?

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

回答

46

通过引用传递。

咦? 通过引用传递意味着您传递变量的地址而不是值。基本上你正在制作一个指向变量的指针。

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

+6

+1对于** Huh **,让我笑了 – 2014-03-13 12:45:08

1

&装置通过按引用;该代码做的是检查传递给该函数的变量是否实际存在于全局范围内。如果没有&它会尝试首先获取变量的副本,如果该变量不存在,将导致错误。

19

这意味着函数获取参数$var的原始值的引用,而不是该值的副本。

例子:

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

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

如果add()不会在函数签名的符号,标志,回声会输出“0”,因为原来的值没有改变。

2

这意味着您通过引用http://ca3.php.net/language.references.pass传递变量。简单地说,这意味着函数获取实际变量而不是变量的副本。您在该函数中对该变量所做的任何更改都将在调用方中进行镜像。