Menu
Coddy logo textTech

Domyślne wartości parametrów

Część sekcji Podstawy ścieżki PHP w Coddy. Lekcja 64 z 71.

Czasami chcesz, aby parametr funkcji miał wartość zastępczą, gdy nie zostanie przekazany żaden argument. Wartości domyślne parametrów pozwalają określić, jaką wartość powinien mieć parametr, jeśli wywołujący go nie określi.

Aby ustawić wartość domyślną, przypisz ją bezpośrednio w deklaracji funkcji za pomocą operatora =:

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

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

To wyświetla:

Hello, Alice!
Hello, Guest!

Gdy wywołasz greet("Alice"), argument zastępuje wartość domyślną. Gdy wywołasz greet() bez argumentu, PHP użyje zamiast niej wartości "Guest".

Możesz łączyć wymagane i opcjonalne parametry, ale parametry z wartościami domyślnymi muszą występować po wymaganych:

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

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

To wyświetla:

Alice is a member
Bob is a admin

Pierwszy parametr $name jest wymagany, natomiast $role domyślnie przyjmuje wartość "member", jeśli nie zostanie podany. Ten wzorzec sprawia, że twoje funkcje są bardziej elastyczne, bez konieczności podawania przez wywołujących zawsze każdego argumentu.

challenge icon

Wyzwanie

Łatwy

Wczytaj dwa wiersze danych wejściowych:

  1. Nazwę produktu (np. Laptop)
  2. Ilość (np. 5). To pole może być puste

Utwórz funkcję o nazwie formatOrder, która przyjmuje dwa parametry: $product (wymagany) i $quantity (opcjonalny, domyślnie 1). Funkcja powinna return ciąg znaków w następującym formacie:

Order: [quantity]x [product]

Jeśli pole ilości jest puste, wywołaj funkcję tylko z nazwą produktu (używając domyślnej ilości). W przeciwnym razie wywołaj ją z obiema wartościami.

Wyświetl zwrócony wynik.

Przykład 1:

Jeśli dane wejściowe to Laptop i 5, wynikiem powinno być:

Order: 5x Laptop

Przykład 2:

Jeśli dane wejściowe to Keyboard i pusty wiersz, wynikiem powinno być:

Order: 1x Keyboard

Przykład 3:

Jeśli dane wejściowe to Monitor i 3, wynikiem powinno być:

Order: 3x Monitor

Spróbuj swoich sił

<?php
// Odczytaj dane wejściowe
$product = trim(fgets(STDIN));
$quantity = trim(fgets(STDIN));

// TODO: Utwórz funkcję formatOrder z parametrem $product (wymaganym) i $quantity (opcjonalnym, domyślnie 1)
// Funkcja powinna zwracać ciąg znaków w formacie: "Order: [quantity]x [product]"


// TODO: Wywołaj funkcję odpowiednio w zależności od tego, czy quantity jest puste
// Jeśli quantity jest puste, wywołaj funkcję tylko z product (użyj wartości domyślnej)
// W przeciwnym razie wywołaj funkcję z product i quantity


// Wyświetl wynik
echo $result;
?>
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Podstawy

Poćwicz samodzielnie: Kompilator PHP online