我一直在谷歌搜索,但是找不到任何有用的信息。
$x->func(&$string, $str1=false, $str2=false);
那个在 $string
前面的 &
是做什么用的呢?&$string
我一直在谷歌搜索,但是找不到任何有用的信息。
$x->func(&$string, $str1=false, $str2=false);
那个在 $string
前面的 &
是做什么用的呢?&$string
你正在通过引用分配该数组值。
通过引用(&$)传递参数和通过$传递参数不同之处在于,当您通过引用传递参数时,您可以操作原始变量,这意味着如果您在函数内部更改它,则它也会在外部更改,如果您将参数作为副本传递,则函数创建此变量的副本实例,并对其进行操作,因此如果您在函数中更改它,它不会在外部更改。
参考: http://www.php.net/manual/en/language.references.pass.php
&表示将变量的引用传递给函数,而不是传递它的副本。
在这种情况下,如果函数更改参数的值,则传递的变量值也会发生更改。
但是请注意PHP 5中以下内容:
您可以在此处找到更多信息:http://www.php.net/manual/en/language.references.pass.php
还有很多信息可以在此处找到: Reference — What does this symbol mean in 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
&
表示通过引用传递:
引用允许两个变量引用相同的内容。换句话说,一个变量指向其内容(而不是成为该内容)。通过引用传递允许两个变量在不同的名称下指向相同的内容。在要引用的变量前放置“&”符号。
$string = "test";
$x->func(&$string); // inside: $string = "test2";
echo $string; // test2
& - 通过引用传递。它是按引用而不是字符串值进行传递的。