在PHP中&符号是什么意思?


What does the “&” sign mean in PHP?

本问题已经有最佳答案,请猛点这里访问。

我试图在谷歌上找到这个答案,但我猜这个符号&可以作为一个操作员使用,或者只是因为任何原因而不是一个可搜索的术语。总之。我在学习如何创建WordPress插件时看到了这段代码片段,所以我只需要知道&在保存类对象的变量之前意味着什么。

1
2
3
4
5
6
7
8
//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'));
}

这将强制通过引用传递变量。通常,会为简单类型创建一个硬拷贝。这对于大字符串(性能提高)或不使用RETURN语句操作变量非常方便,例如:

1
2
3
4
5
6
7
8
9
10
$a = 1;

function inc(&$input)
{
   $input++;
}

inc($a);

echo $a; // 2

对象将自动通过引用传递。

如果要处理函数的副本,请使用

1
clone $object;

然后,原始对象不会被更改,例如:

1
2
3
4
$a = new Obj;
$a->prop = 1;
$b = clone $a;
$b->prop = 2; // $a->prop remains at 1


变量前面的和号表示对原始变量的引用,而不是副本或值。

请参见:http://www.phpreferrencebook.com/samples/php-pass-by-reference/


这传递的是引用而不是值。

见:

http://php.net/manual/en/language.references.phphttp://php.net/manual/en/language.references.pass.php


我用它向一个函数发送一个变量,并让函数改变变量。函数完成后,我不需要将函数返回到返回值,并将新值设置为我的变量。

例子

1
2
3
4
5
6
7
function fixString(&$str) {
    $str ="World";
}

$str ="Hello";
fixString($str);
echo $str; //Outputs World;

不带&的代码

1
2
3
4
5
6
7
8
function fixString($str) {
    $str ="World";
    return $str;
}

$str ="Hello";
$str = fixString($str);
echo $str; //Outputs World;