我正在'解剖'PunBB,它的一个功能检查BBCode标签的结构并尽可能修复简单的错误:
function preparse_tags($text, &$errors, $is_signature = false)
&
变量前面的$error
是什么意思?
答案 0 :(得分:22)
这意味着pass the variable by reference,而不是传递变量的值。这意味着当程序流返回到调用代码时,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;
输出:
不变
不变
更改!
答案 1 :(得分:2)
它通过引用传递而不是通过值传递。
这允许函数在调用函数的范围内更改其自身范围之外的变量。
例如:
function addOne( &$val ) {
$val++;
}
$a = 1;
addOne($a);
echo $a; // Will echo '2'.
在preparse_tags
函数的情况下,它允许函数返回已解析的标记,但允许调用父级获取任何错误,而不必检查返回值的格式/类型。
答案 2 :(得分:1)
它接受对变量的引用作为参数。
这意味着函数对参数所做的任何更改(例如$errors = "Error!"
)都会影响调用函数传递的变量。
答案 3 :(得分:0)
这意味着在被调用的函数中将修改在错误位置传递的变量。有关详细信息,请参阅this。