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

2022-08-30 11:30:13

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

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

这之前有什么用?&$string&$string


答案 1

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

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

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


答案 2

&指出对变量的引用应该传递到函数中,而不是它的克隆。

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

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

推荐