Что означает знак & перед переменной? - PullRequest
6 голосов
/ 14 ноября 2010

Я «препарирую» PunBB, и одна из его функций проверяет структуру тегов BBCode и по возможности исправляет простые ошибки:

function preparse_tags($text, &$errors, $is_signature = false)

Что означает & перед $error среднее значение?

Ответы [ 4 ]

22 голосов
/ 14 ноября 2010

Это означает, что передает переменную по ссылке вместо передачи значения переменной. Это означает, что любые изменения этого параметра в функции 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;

Выход:

без изменений

без изменений

Изменен!

2 голосов
/ 14 ноября 2010

Передается по ссылке, а не по значению.

Это позволяет функции изменять переменные вне ее собственной области видимости в вызывающей функции.

Например:

function addOne( &$val ) {
    $val++;
}
$a = 1;
addOne($a);
echo $a; // Will echo '2'.

В случае функции preparse_tags она позволяет функции возвращать проанализированные теги, но позволяет вызывающему родителю получать любые ошибки, не проверяя формат / тип возвращаемого значения.

1 голос
/ 14 ноября 2010

Принимает ссылку на переменную в качестве параметра.

Это означает, что любые изменения, которые функция вносит в параметр (например, $errors = "Error!"), будут влиять на переменную, переданную вызывающей функцией.

0 голосов
/ 14 ноября 2010

Это означает, что переменная, переданная в позиции ошибок, будет изменена вызываемой функцией.См. this для подробного просмотра.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...