PHP&$string——这是什么意思


PHP &$string - What does this mean?

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

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

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

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

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

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

;声明对变量的引用应该传递到函数中,而不是它的克隆

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

但是,对于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

&表示通过引用:

引用允许两个变量引用相同的内容。换言之,变量指向其内容(而不是成为该内容)。通过引用传递允许两个变量以不同的名称指向相同的内容。与号(&)位于要引用的变量之前。

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

另请参阅:PHP';s=&操作员

示例:

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

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

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