我试图在Google上找到这个答案,但我想符号&
可以作为某个运算符,或者通常不是任何理由的搜索词。无论如何。我在学习如何创建WordPress插件时看到了这段代码片段,所以我只需要知道&
在包含类对象的变量之前的含义。
//Actions and Filters
if (isset($dl_pluginSeries)) {
//Actions
add_action('wp_head', array(&$dl_pluginSeries, 'addHeaderCode'), 1);
//Filters
add_filter('the_content', array(&$dl_pluginSeries, 'addContent'));
}
答案 0 :(得分:23)
这将强制变量通过引用传递。通常,将为简单类型创建硬拷贝。对于大字符串(性能增益)或者如果你想在不使用return语句的情况下操作变量,这可以派上用场,例如:
$a = 1;
function inc(&$input)
{
$input++;
}
inc($a);
echo $a; // 2
对象将自动通过引用传递。
如果您想要复制到某个功能,请使用
clone $object;
然后,原始对象不会改变,例如:
$a = new Obj;
$a->prop = 1;
$b = clone $a;
$b->prop = 2; // $a->prop remains at 1
答案 1 :(得分:10)
变量前面的&符号表示对原始文件的引用,而不是副本或仅是值。
请参见此处: http://www.phpreferencebook.com/samples/php-pass-by-reference/
答案 2 :(得分:9)
这通过引用而不是值传递。
请参阅:
http://php.net/manual/en/language.references.php
http://php.net/manual/en/language.references.pass.php
答案 3 :(得分:4)
我用它来向函数发送变量,并让函数改变变量。函数完成后,我不需要将函数返回到返回值并将新值设置为我的变量。
function fixString(&$str) {
$str = "World";
}
$str = "Hello";
fixString($str);
echo $str; //Outputs World;
&
function fixString($str) {
$str = "World";
return $str;
}
$str = "Hello";
$str = fixString($str);
echo $str; //Outputs World;