PHP&$字符串-这是什么意思?

PHP&$字符串-这是什么意思?,php,operands,Php,Operands,我一直在谷歌上搜索,但什么也找不到 $x->func(&$string, $str1=false, $str2=false); 在$string&$string之前的&是做什么的?您通过引用来分配该数组值 通过引用(&$)和$传递参数是指当通过引用传递参数时,处理原始变量,这意味着如果在函数内部更改它,它也将在函数外部更改,如果将参数作为副本传递,函数将创建此变量的副本实例,并处理此副本,所以如果你在函数中改变它,它就不会在函数外改变 Ref:说明应将对变量的引用传递到函数中,而

我一直在谷歌上搜索,但什么也找不到

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

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

您通过引用来分配该数组值

通过引用(&$)和$传递参数是指当通过引用传递参数时,处理原始变量,这意味着如果在函数内部更改它,它也将在函数外部更改,如果将参数作为副本传递,函数将创建此变量的副本实例,并处理此副本,所以如果你在函数中改变它,它就不会在函数外改变


Ref:

说明应将对变量的引用传递到函数中,而不是将其克隆

在这种情况下,如果函数更改参数的值,则传入的变量的值也将更改

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

  • 从5.3开始,不推荐使用调用时间引用(如示例中所示)
  • 在函数签名上指定时按引用传递不是不推荐的,但对象不再需要,因为现在所有对象都是按引用传递的
您可以在此处找到更多信息:

这里有很多信息:

字符串行为的一个示例:

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

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

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

&
表示通过引用传递:


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

有趣的是,您提到“=&”,我刚刚看到并了解了今晚的内容,我已经编写了多年,以前从未使用过它。我也编写了多年php,但很少使用它。大多数情况下,您传递对象时不需要此项。简单解释,谢谢您的文档链接指向一个相关但不同的主题。@Rob Baillie,谢谢,我已更新了此链接。将此标记为重复的人:这目前不正确。。。这个问题不是重复的,因为在所谓的参考问题中没有显示符号“&$”的组合。在将问题标记为重复问题时,请表现出更多的谨慎和考虑。迈克是对的。它还没有被回答,至少在指定的页面中没有。这种回答是不负责任的。它们应该被禁止,制造它们的人应该被降级。