Menu
Coddy logo textTech

Значения параметров по умолчанию

Часть раздела Основы путешествия по PHP на Coddy. Урок 64 из 71.

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

Чтобы задать значение по умолчанию, присвойте его непосредственно в объявлении функции с помощью оператора =:

<?php
function greet($name = "Guest") {
    echo "Hello, $name!\n";
}

greet("Alice");
greet();
?>

Это выведет:

Hello, Alice!
Hello, Guest!

Когда вы вызываете greet("Alice"), аргумент переопределяет значение по умолчанию. Когда вы вызываете greet() без аргумента, PHP вместо этого использует "Guest".

You can mix required and optional parameters, but parameters with defaults must come after required ones:

<?php
function createUser($name, $role = "member") {
    return "$name is a $role";
}

echo createUser("Alice") . "\n";
echo createUser("Bob", "admin");
?>

Это выводит:

Alice is a member
Bob is a admin

Первый параметр $name является обязательным, а для $role по умолчанию используется значение "member", если он не указан. Этот шаблон делает ваши функции более гибкими, поскольку вызывающим сторонам не требуется всегда указывать каждый аргумент.

challenge icon

Задание

Легко

Прочитайте две строки ввода:

  1. Название продукта (например, Laptop)
  2. Количество (например, 5). Этот ввод может быть пустым

Создайте функцию с именем formatOrder, которая принимает два параметра: $product (обязательный) и $quantity (необязательный, значение по умолчанию — 1). Функция должна return строку в следующем формате:

Order: [quantity]x [product]

Если ввод количества пуст, вызовите функцию только с названием продукта (используя количество по умолчанию). В противном случае вызовите её с обоими значениями.

Выведите возвращённый результат.

Пример 1:

Если введены Laptop и 5, результатом должно быть:

Order: 5x Laptop

Пример 2:

Если введены Keyboard и пустая строка, результатом должно быть:

Order: 1x Keyboard

Пример 3:

Если введены Monitor и 3, результатом должно быть:

Order: 3x Monitor

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

<?php
// Считать ввод
$product = trim(fgets(STDIN));
$quantity = trim(fgets(STDIN));

// TODO: Создать функцию formatOrder с $product (обязательный) и $quantity (необязательный, по умолчанию 1)
// Функция должна возвращать строку в формате: "Order: [quantity]x [product]"


// TODO: Вызвать функцию соответствующим образом в зависимости от того, пусто ли quantity или нет
// Если quantity пусто, вызвать только с product (использовать значение по умолчанию)
// Иначе вызвать с обоими product и quantity


// Вывести результат
echo $result;
?>
quiz iconПроверьте себя

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

Все уроки раздела Основы

Потренируйтесь самостоятельно: Онлайн-компилятор PHP