是什麼&$variable
傳遞參數,像這樣的含義和功能意義就像
function &SelectLimit($sql, $nrows=-1, $offset=-1, $inputarr=false, $secs2cache=0)
{
$rs =& $this->do_query($sql, $offset, $nrows, $inputarr);
return $rs;
}
是什麼&$variable
傳遞參數,像這樣的含義和功能意義就像
function &SelectLimit($sql, $nrows=-1, $offset=-1, $inputarr=false, $secs2cache=0)
{
$rs =& $this->do_query($sql, $offset, $nrows, $inputarr);
return $rs;
}
:myFunc(&$var);
指變量通過引用傳遞(而不是通過值)。因此,對函數中的變量所做的任何修改都會修改調用的變量。
在功能名稱前面加上&
表示「按參考返回」。這有點違反直覺。如果可能,我會避免使用它。 What does it mean to start a PHP function with an ampersand?
注意不要將其與&=
或&
運算符(即completely different)混淆。
快速測試用於通過引用傳遞:
<?php
class myClass {
public $var;
}
function incrementVar($a) {
$a++;
}
function incrementVarRef(&$a) { // not deprecated
$a++;
}
function incrementObj($obj) {
$obj->var++;
}
$c = new myClass();
$c->var = 1;
$a = 1; incrementVar($a); echo "test1 $a\n";
$a = 1; incrementVar(&$a); echo "test2 $a\n"; // deprecated
$a = 1; incrementVarRef($a); echo "test3 $a\n";
incrementObj($c); echo "test4 $c->var\n";// notice that objects are
// always passed by reference
輸出:
Deprecated: Call-time pass-by-reference has been deprecated; If you would like
to pass it by reference, modify the declaration of incrementVar(). [...]
test1 1
test2 2
test3 2
test4 2
的符號 - 「&」 - 被用於指定一個變量的地址,代替它的值。我們稱之爲「通過參考」。
因此,「& $變量」是變量的引用,而不是它的值。而「功能& FUNC(...」講述了函數返回的不是變量的副本返回變量的參考,
參見:
[參考文獻中的PHP文檔](http://php.net/manual/en/language.references.php) –