可能重复:
What does it mean to start a PHP function with an ampersand?
我想分享一下我想知道的以及我对PHP语言中&符号的不理解(版本< 5.3)。
我想我知道基本用法,例如:
$var = 'foo';
echo $var; //output foo
$var2 = &$var;
$var2 = 'bar';
echo $var2; //output bar
到目前为止,这么好。让我们试试对象:
class Person {public $name='john';}
$person = new Person();
echo $person->name;//outputs john
$person2 = &$person;
$person2->name = 'doe';
echo $person->name;//obviously outputs doe
请注意,如果$person
和$person2 (= $person)
引用相同的对象(如在Java中),上面的代码会导致相同的结果没有&符号,因此将检索对象的任何更改两个变量。
到目前为止,我可以说&符号运算符仅对基元有用。但是,有些事我不明白。
虽然,我理解这种用法:
function superplusplus(&$base) {$base++;}
$var = 2;
superplusplus($var);
echo $var;//outputs 3
我没有得到的是这是&符号的使用,如下所示:
function &superplusplus($var) {$var++;}
它似乎没有任何效果,好像根本没有&符号。
这种语法应该做什么?