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.
Wyzwanie
ŁatwyWczytaj dwa wiersze danych wejściowych:
- Imię osoby (np.
Alice) - 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ą
$baseSalaryi ustaw jej wartość na1000 - Oblicz całkowite wynagrodzenie, dodając
$baseSalaryi$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 1050Przykład 2:
Jeśli danymi wejściowymi są Bob i 200, wynikiem powinno być:
Bob earns 1200Przykład 3:
Jeśli danymi wejściowymi są Emma i 0, wynikiem powinno być:
Emma earns 1000Spró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);
?>Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Podstawy
4Operatory porównania i logiczne
Operatory porównaniaRówność i tożsamośćOperatory logiczne — część 1Operatory logiczne — część 2Powtórka — prosta logika2Zmienne i typy danych
LiczbyCiągi znaków i cudzysłowyWartości logiczneKonwencje nazewnictwaPodsumowanie — inicjalizacja zmiennychPuste zmienneŁączenie ciągów znakówPobieranie danych od użytkownikaKonwersja na inne typy5Instrukcje warunkowe
Instrukcja ifIf - elseOperator trójargumentowyOperator null coalescingInstrukcja switchPodsumowanie — podejmowanie decyzji3Podstawowe operatory
Operatory arytmetyczneOperator moduloOperator potęgowaniaPrzypisanie złożoneInkrementacja/dekrementacjaPriorytet operatorówPowtórka — proste obliczeniaOperatory łańcuchów znakówPoćwicz samodzielnie: Kompilator PHP online