Вы можете передать переменную по ссылке в функцию, чтобы функция могла изменить переменную. Синтаксис следующий:
<?php
function foo(&$var)
{
$var++;
}
$a=5;
foo($a);
// $a is 6 here
?>
Примечание . На вызове функции нет ссылочного знака — только на определениях функций. Одних только определений функций достаточно, чтобы правильно передать аргумент по ссылке.
Следующие вещи могут быть переданы по ссылке:
- Переменные, т.е.
foo($a)
Ссылки, возвращаемые из функций, т.е.:
<?php
function foo(&$var)
{
$var++;
}
function &bar()
{
$a = 5;
return $a;
}
foo(bar());
?>
Никакие другие выражения не должны передаваться по ссылке, так как результат не определен. Например, следующие примеры передачи по ссылке недопустимы:
<?php
function foo(&$var)
{
$var++;
}
function bar() // Note the missing &
{
$a = 5;
return $a;
}
foo(bar()); // Produces a notice
foo($a = 5); // Expression, not variable
foo(5); // Produces fatal error
class Foobar
{
}
foo(new Foobar()) // Produces a notice as of PHP 7.0.7
// Notice: Only variables should be passed by reference
?>
0 комментариев