Passing by Reference
Оновлено: 11.05.2023
Ви можете передати змінну за посиланням у функцію, щоб функція могла модифікувати змінну. Синтаксис наступний:
<?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()
{
$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
?>