Variable Scope
Teil des Abschnitts Grundlagen der PHP-Journey von Coddy — Lektion 67 von 71.
Variablen, die innerhalb einer Funktion erstellt werden, sind vollständig getrennt von Variablen außerhalb dieser Funktion. Dieses Konzept wird Variablenumfang genannt, und das Verständnis davon verhindert verwirrende Fehler in Ihrem Code.
Eine Variable, die innerhalb einer Funktion definiert wird, existiert nur innerhalb dieser Funktion. Sie wird eine lokale Variable genannt:
<?php
function sayHi() {
$message = "Hello!";
echo $message;
}
sayHi();
echo $message; // Fehler: $message existiert hier nicht
?>Die Variable $message wird innerhalb von sayHi() erstellt und verschwindet, wenn die Funktion endet. Der Versuch, sie außerhalb darauf zuzugreifen, verursacht einen Fehler.
Ähnlich sind Variablen, die außerhalb einer Funktion definiert sind, nicht automatisch innerhalb dieser verfügbar:
<?php
$name = "Alice";
function greet() {
echo $name; // Fehler: $name ist innerhalb dieser Funktion nicht definiert
}
greet();
?>Obwohl $name im Hauptcode existiert, kann die Funktion es nicht sehen. Um Werte von außen in einer Funktion zu verwenden, geben Sie sie als Parameter weiter – das ist der saubere, empfohlene Ansatz, den Sie bereits gelernt haben.
Diese Trennung ist tatsächlich hilfreich. Das bedeutet, dass Funktionen Variablen in anderen Teilen Ihres Programms nicht versehentlich ändern, was Ihren Code vorhersehbarer und einfacher zu debuggen macht.
Aufgabe
EinfachLesen Sie zwei Zeilen Eingabe:
- Der Name einer Person (z. B.
Alice) - Ein Bonus-Betrag als ganze Zahl (z. B.
50)
Erstellen Sie eine Funktion namens calculateBonus, die zwei Parameter akzeptiert: $name (string) und $bonus (int).
Innerhalb der Funktion:
- Erstellen Sie eine lokale Variable
$baseSalaryund setzen Sie sie auf1000 - Berechnen Sie die Gesamtvergütung, indem Sie
$baseSalaryund$bonusaddieren - Geben Sie einen String im Format zurück:
[name] earns [total]
Rufen Sie die Funktion mit den Eingabewerten auf und drucken Sie das zurückgegebene Ergebnis aus.
Beispiel 1:
Wenn die Eingaben Alice und 50 sind, sollte die Ausgabe sein:
Alice earns 1050Beispiel 2:
Wenn die Eingaben Bob und 200 sind, sollte die Ausgabe sein:
Bob earns 1200Beispiel 3:
Wenn die Eingaben Emma und 0 sind, sollte die Ausgabe sein:
Emma earns 1000Spickzettel
Variablen, die innerhalb einer Funktion erstellt werden, sind lokale Variablen und existieren nur innerhalb dieser Funktion. Dieses Konzept wird Variablen-Scope genannt.
Eine Variable, die innerhalb einer Funktion definiert ist, kann nicht außerhalb davon aufgerufen werden:
<?php
function sayHi() {
$message = "Hello!";
echo $message;
}
sayHi();
echo $message; // Error: $message doesn't exist here
?>Ähnlich sind Variablen, die außerhalb einer Funktion definiert sind, nicht automatisch innerhalb davon verfügbar:
<?php
$name = "Alice";
function greet() {
echo $name; // Error: $name is not defined inside this function
}
greet();
?>Um Werte von außen in einer Funktion zu verwenden, übergeben Sie sie als Parameter.
Probier es selbst
<?php
// Eingabe lesen
$name = trim(fgets(STDIN));
$bonus = intval(fgets(STDIN));
// TODO: Erstellen Sie die calculateBonus-Funktion unten
// - Es sollte $name (string) und $bonus (int) als Parameter akzeptieren
// - Erstellen Sie eine lokale Variable $baseSalary auf 1000 gesetzt
// - Berechnen Sie die Gesamtvergütung und geben Sie "[name] verdient [total]" zurück
// Rufen Sie die Funktion auf und drucken Sie das Ergebnis
echo calculateBonus($name, $bonus);
?>Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Grundlagen
4Comparison & Logical Operators
Comparison OperatorsEquality & IdentityLogical Operators Part 1Logical Operators Part 2Recap - Simple Logic2Variables and Data Types
NumbersStrings and QuotesBooleansNaming ConventionsRecap - Variable InitEmpty VariablesString ConcatenationGetting User InputCast to Different Types5Conditional Logic
If StatementIf - ElseThe Ternary OperatorNull Coalescing OperatorSwitch StatementRecap - Making Decisions3Basic Operators
Arithmetic OperatorsModulo OperatorExponentiation OperatorCombined AssignmentIncrement/DecrementOperator PrecedenceRecap - Simple CalculationsString Operators