Ссылки в PHP позволяют одной переменной указывать на ту же область памяти, что и другая переменная. Они создаются с помощью амперсанда (&).
Объявление ссылки
| Код |
|---|
$a = 10; $b = &$a; // Теперь $b ссылается на $a $b = 20; echo $a; // 20, так как $b изменяет значение $a |
Ссылки часто используются для передачи аргументов по ссылке, чтобы изменять оригинальное значение переменной внутри функции.
| Код |
|---|
function addFive(&$num) {
$num += 5;
}
$a = 10;
addFive($a);
echo $a; // 15 |
| Код |
|---|
function &getValue(&$arr, $index) {
return $arr[$index];
}
$array = [1, 2, 3];
$val = &getValue($array, 1);
$val = 42;
print_r($array); // [1, 42, 3] |
Обычно, когда вы присваиваете одну переменную другой, в PHP создается копия:
| Код |
|---|
$x = 5; $y = $x; // Копия $y = 10; echo $x; // 5 (не изменилось) |
| Код |
|---|
$x = 5; $y = &$x; // Ссылка $y = 10; echo $x; // 10 (изменилось) |
✅ Когда нужно передавать большие массивы/объекты в функцию без копирования.
✅ Когда нужно изменить переменную внутри функции.
❌ Не стоит злоупотреблять ссылками, так как они могут усложнить отладку кода.