PHP&$ string - 这是什么意思?

Mic*_*key 31 php operands

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

$x->func(&$string, $str1=false, $str2=false);
Run Code Online (Sandbox Code Playgroud)

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

Kri*_*h R 41

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

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

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


Rob*_*lie 12

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

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

但是,对于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" );
Run Code Online (Sandbox Code Playgroud)

输出:

C:\test>php test.php

sOuterTest1 is changed
sOuterTest2 is original
sOuterTest3 is changed
Run Code Online (Sandbox Code Playgroud)


Lig*_*ltϟ 5

&意味着通过引用传递:

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