Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про PHP: function, parameter, passing

Как передаются данные в функцию: по ссылке или по значению?

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

Короткий ответ

В PHP по умолчанию аргументы в функцию передаются по значению. Это означает, что функция получает копию значения переменной, и изменения этой копии внутри функции не влияют на исходную переменную. Однако для объектов передается не сам объект, а ссылка на него, поэтому изменения свойств объекта внутри функции будут видны снаружи. Массивы и скалярные типы (числа, строки) передаются по значению, если явно не указано иное.

Длинный ответ

Основные механизмы передачи аргументов

Передача по значению (по умолчанию)

  • Создается копия значения переменной

  • Изменения внутри функции не влияют на исходную переменную

  • Применяется для скалярных типов (int, float, string, bool) и массивов

Пример:

php

function modifyValue($x) {
    $x = 100;
}

$number = 5;
modifyValue($number);
echo $number; // Выведет 5 (не изменилось)

Передача объектов

  • Объекты передаются по ссылке (начиная с PHP 5)

  • Функция получает доступ к тому же объекту в памяти

  • Изменения свойств объекта сохраняются

Пример:

php

class User {
    public $name;
}

function changeName($user) {
    $user->name = "John";
}

$user = new User();
$user->name = "Alice";
changeName($user);
echo $user->name; // Выведет "John"

Практические различия

Для скалярных значений:

  • Передача по значению безопасна

  • Исходные данные защищены от случайного изменения

Для объектов:

  • Эффективно по памяти (не создаются копии)

  • Позволяет модифицировать состояние объекта

Вывод: По умолчанию PHP использует передачу по значению для скаляров и массивов, и передачу по ссылке для объектов. Это обеспечивает баланс между безопасностью и производительностью.

  • Аватар

    PHP Guru

    Mikhail Savin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    5

  • Сложность:

    3

Навыки

  • PHP

    PHP

Ключевые слова

#function

#parameter

#passing

Подпишись на PHP Developer в телеграм

  • Аватар

    PHP Guru

    Mikhail Savin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.