Menu
Coddy logo textTech

Передача по ссылке

Часть раздела Логика и управление потоком путешествия по PHP на Coddy — урок 7 из 68.

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

Однако иногда вам нужно, чтобы функция изменяла исходную переменную напрямую. Здесь на помощь приходит передача по ссылке. Добавляя амперсанд (&) перед именем параметра в определении функции, вы указываете PHP передавать саму переменную вместо её копии:

<?php
function doubleValue(&$number) {
    $number = $number * 2;
}

$value = 10;
doubleValue($value);
echo $value;  // Вывод: 20
?>

Обратите внимание, как $value изменилось с 10 на 20, хотя мы ничего не возвращали из функции. Параметр &$number создает прямую связь с исходной переменной $value, позволяя функции изменять её напрямую.

Этот метод особенно полезен, когда вам нужно, чтобы функция изменяла несколько переменных, или при работе с большими структурами данных, где копирование было бы неэффективным.

quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

challenge icon

Задание

Легко

Создайте функцию с именем updateInventory, которая принимает три параметра: ссылку на переменную количества, количество для добавления и количество для удаления. Функция должна изменять исходное количество, прибавляя первое значение и вычитая второе.

Вы получите три входных значения: начальное количество, количество для добавления и количество для удаления. Прочитайте все три входных значения, создайте переменную с начальным количеством, вызовите функцию updateInventory, передав количество по ссылке вместе со значениями для добавления и удаления, и выведите обновленное количество.

Формат входных данных: Три строки — первая строка содержит начальное количество (число), вторая строка содержит количество для добавления (число), третья строка содержит количество для удаления (число).

Ожидаемый результат: Обновленное количество после добавления и удаления.

Шпаргалка

По умолчанию PHP передает переменные в функции по значению (копию). Чтобы изменить исходную переменную, используйте передачу по ссылке, добавив амперсанд (&) перед именем параметра:

<?php
function doubleValue(&$number) {
    $number = $number * 2;
}

$value = 10;
doubleValue($value);
echo $value;  // Вывод: 20
?>

Параметр &$number создает прямую связь с исходной переменной, позволяя функции изменять ее без возврата значения. Это полезно для изменения нескольких переменных или эффективной работы с большими структурами данных.

Попробуйте сами

<?php
// Чтение входных данных
$initialQuantity = intval(fgets(STDIN));
$amountToAdd = intval(fgets(STDIN));
$amountToRemove = intval(fgets(STDIN));

// Создание переменной количества
$quantity = $initialQuantity;

// TODO: Создайте здесь функцию updateInventory, которая принимает параметр по ссылке

// TODO: Вызовите функцию updateInventory с переменной quantity по ссылке

// Вывод обновленного количества
echo $quantity;
?>
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Логика и управление потоком