Menu
Coddy logo textTech

Zakres zmiennych

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

Zmienne utworzone wewnątrz funkcji są całkowicie niezależne od zmiennych poza nią. To pojęcie nazywa się zakresem zmiennej, a jego zrozumienie pomaga uniknąć trudnych do zrozumienia błędów w kodzie.

Zmienna zdefiniowana wewnątrz funkcji istnieje tylko w obrębie tej funkcji. Nazywa się ją zmienną lokalną:

<?php
function sayHi() {
    $message = "Hello!";
    echo $message;
}

sayHi();
echo $message; // Błąd: $message nie istnieje w tym miejscu
?>

Zmienna $message jest tworzona wewnątrz sayHi() i znika po zakończeniu funkcji. Próba uzyskania do niej dostępu z zewnątrz powoduje błąd.

Podobnie zmienne zdefiniowane poza funkcją nie są automatycznie dostępne wewnątrz niej:

<?php
$name = "Alice";

function greet() {
    echo $name; // Błąd: $name nie jest zdefiniowana wewnątrz tej funkcji
}

greet();
?>

Mimo że $name istnieje w głównym kodzie, funkcja go nie widzi. Aby używać zewnętrznych wartości w funkcji, przekaż je jako parametry — to czyste, zalecane podejście, którego już się nauczyłeś.

Ten podział jest w rzeczywistości pomocny. Oznacza, że funkcje nie zmienią przypadkowo zmiennych w innych częściach programu, dzięki czemu kod będzie bardziej przewidywalny i łatwiejszy do debugowania.

challenge icon

Wyzwanie

Łatwy

Wczytaj dwa wiersze danych wejściowych:

  1. Imię osoby (np. Alice)
  2. Kwotę premii jako liczbę całkowitą (np. 50)

Utwórz funkcję o nazwie calculateBonus, która przyjmuje dwa parametry: $name (string) i $bonus (int).

Wewnątrz funkcji:

  • Utwórz zmienną lokalną $baseSalary i ustaw jej wartość na 1000
  • Oblicz całkowite wynagrodzenie, dodając $baseSalary i $bonus
  • Zwróć ciąg znaków w formacie: [name] earns [total]

Wywołaj funkcję z wartościami wejściowymi i wypisz zwrócony wynik.

Przykład 1:

Jeśli danymi wejściowymi są Alice i 50, wynikiem powinno być:

Alice earns 1050

Przykład 2:

Jeśli danymi wejściowymi są Bob i 200, wynikiem powinno być:

Bob earns 1200

Przykład 3:

Jeśli danymi wejściowymi są Emma i 0, wynikiem powinno być:

Emma earns 1000

Spróbuj swoich sił

<?php
// Odczytaj dane wejściowe
$name = trim(fgets(STDIN));
$bonus = intval(fgets(STDIN));

// TODO: Utwórz poniżej funkcję calculateBonus
// - Powinna przyjmować $name (string) i $bonus (int) jako parametry
// - Utwórz zmienną lokalną $baseSalary o wartości 1000
// - Oblicz łączne wynagrodzenie i zwróć "[name] earns [total]"



// Wywołaj funkcję i wypisz wynik
echo calculateBonus($name, $bonus);
?>
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