变量前面的符号是什么意思?

joh*_*sel 6 php punbb

我正在'解剖'PunBB,它的一个函数检查BBCode标签的结构并尽可能修复简单的错误:

function preparse_tags($text, &$errors, $is_signature = false)
Run Code Online (Sandbox Code Playgroud)

什么是&在前面的$error变量是什么意思?

And*_*ndy 22

它意味着通过引用传递变量,而不是传递变量的值.这意味着preparse_tags当程序流返回到调用代码时,函数中对该参数的任何更改都将保留.

function passByReference(&$test) {
    $test = "Changed!";
}

function passByValue($test) {
    $test = "a change here will not affect the original variable";
}

$test = 'Unchanged';
echo $test . PHP_EOL;

passByValue($test);
echo $test . PHP_EOL;

passByReference($test);
echo $test . PHP_EOL;
Run Code Online (Sandbox Code Playgroud)

输出:

不变

不变

变了!