变量前面的“and”是什么意思?

时间:2015-11-08 作者:stlawrance

当我们使用& 在函数中的参数中,这意味着如果我们在该函数内更改变量,则该变量不会在函数外更改。

<?php
function add_10(&$number)
{
    $number +=10;
}
$our_lovely_number = 10;
add_10($our_lovely_number);
echo $our_lovely_number;    // outputs 20 
?>
不是吗?

但当我遇到插件时,我看到了& 在构造函数中使用。这意味着什么?

像这样

//this is constructor function
add_action(\'admin_init\', array(&$this, \'adminInit\'));
我试图通过“wordpress hooks中的行为和含义”搜索google,但我什么也看不到

1 个回复
最合适的回答,由SO网友:JxAxMxIxN 整理而成

在本例中,您只需创建一个数组array(&$this, \'adminInit\') 哪里array[0] 现在引用任何内容$this 是,并且array[1] = \'adminInit\'.

我相信这个案子$this 引用您所在的类(用&;this表示),然后adminInit 很可能是该类中的函数(方法)。因此,当admin_init 碰巧它知道访问adminInit() 在当前类中的函数。

&;变量的前面表示它是该变量的引用(指针),而不是实际值。当然,调用时它仍将返回值,但它的返回方式有点像打开文件的快捷方式。下面是一个帮助您理解的示例。

$variable1 = "one"; //set $variable1
$variable2 = &$variable1; //make $variable2 reference $variable1

echo $variable1; //echos "one"
echo "<br>";
echo $variable2; //echos "one"
echo "<hr>";

$variable1 = "two"; //only change the value of $variable1

echo $variable1; //echos "two"
echo "<br>";
echo $variable2; //echos "two"
echo "<hr>";

$variable2 = "three"; //only change the value of $variable2 (which is actually $variable1 by reference)

echo $variable1; //echos "three"
echo "<br>";
echo $variable2; //echos "three"
echo "<hr>";
另一种理解方式是。。。

function change_reference( &$ref ){
        $ref = "two";
}

$var1 = "one";

change_reference( $var1 );

echo $var1; //will echo "two"
你可以从这里开始http://php.net/manual/en/language.references.whatare.php 然后使用参考文献解释菜单链接进行深入挖掘。

相关推荐