> В чем разница передачи по значению и по ссылке в PHP (PHP)

Уровень: middle · Роль: backend · Язык: PHP · Категория: Технические вопросы

Компании: vanta

Стек: PHP

> Пример ответа

Разница между передачей по значению и по ссылке в PHP заключается в том, как переменная передаётся в функцию и как изменения внутри функции влияют на исходную переменную.

Передача по значению - это поведение по умолчанию. В функцию передаётся копия значения переменной. Любые изменения параметра внутри функции не затрагивают исходную переменную вне её. Например:

PHP
function addTen($num) {
$num += 10;
}
$x = 5;
addTen($x);
echo $x; // 5 - значение не изменилось

Передача по ссылке - в функцию передаётся ссылка на ту же область памяти, где хранится исходная переменная. Для этого в объявлении функции перед параметром ставится амперсанд &. Изменения параметра внутри функции напрямую меняют исходную переменную:

PHP
function addTenByRef(&$num) {
$num += 10;
}
$x = 5;
addTenByRef($x);
echo $x; // 15 - значение изменилось

Ключевые моменты:

  • Передача по ссылке экономит память при работе с большими данными (например, массивами), так как не создаётся копия.
  • Однако она может привести к неожиданным побочным эффектам, поэтому её следует использовать осознанно.
  • В PHP объекты (экземпляры классов) всегда передаются по ссылке (начиная с PHP 5), но это не совсем то же самое: передаётся идентификатор объекта, а не сама переменная.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью