42

我一直在谷歌搜索,但我找不到任何东西。

$x->func(&$string, $str1=false, $str2=false);

&之前$string &$string是做什么的?

4

5 回答 5

54

您正在通过引用分配该数组值。

通过引用 (&$) 和 $ 传递参数是,当您通过引用传递参数时,您在原始变量上工作,这意味着如果您在函数内部更改它,如果您将参数作为复制,函数创建这个变量的副本实例,并在这个副本上工作,所以如果你在函数中更改它,它不会在它之外被更改

参考:http ://www.php.net/manual/en/language.references.pass.php

于 2013-12-06T08:49:02.860 回答
13

& 表示对变量的引用应该传递给函数而不是它的克隆。

在这种情况下,如果函数改变了参数的值,那么传入的变量的值也会改变。

但是,对于 PHP 5,您应该记住以下几点:

  • 呼叫时间参考(如您在示例中所示)自 5.3 起已弃用
  • 不推荐在函数签名上指定时通过引用传递,但不再需要对象,因为现在所有对象都通过引用传递。

您可以在此处找到更多信息:http ://www.php.net/manual/en/language.references.pass.php

这里有很多信息: 参考——这个符号在 PHP 中是什么意思?

字符串的行为示例:

function changeString( &$sTest1, $sTest2, $sTest3 ) {
    $sTest1 = 'changed';
    $sTest2 = 'changed';
    $sTest3 = 'changed';
}

$sOuterTest1 = 'original';
$sOuterTest2 = 'original';
$sOuterTest3 = 'original';

changeString( $sOuterTest1, $sOuterTest2, &$sOuterTest3 );

echo( "sOuterTest1 is $sOuterTest1\r\n" );
echo( "sOuterTest2 is $sOuterTest2\r\n" );
echo( "sOuterTest3 is $sOuterTest3\r\n" );

输出:

C:\test>php test.php

sOuterTest1 is changed
sOuterTest2 is original
sOuterTest3 is changed
于 2013-12-06T08:50:26.503 回答
4

&表示通过引用传递:

引用允许两个变量引用相同的内容。换句话说,一个变量指向它的内容(而不是成为那个内容)。通过引用传递允许两个变量以不同的名称指向相同的内容。与号 ( &) 放在要引用的变量之前。

于 2013-12-06T09:01:23.033 回答
3

这意味着您将对字符串的引用传递给方法。在方法中对字符串所做的所有更改也将反映在代码中该方法之外。

另请参阅:PHP 的 =& 运算符

例子:

$string = "test";
$x->func(&$string); // inside: $string = "test2";
echo $string; // test2

如果没有 & 运算符,您仍然会在变量中看到“test”。

于 2013-12-06T08:51:08.500 回答
3

& – 通过引用传递。它通过引用而不是字符串值传递。

于 2013-12-06T08:52:54.640 回答