Equality & Identity
Teil des Abschnitts Grundlagen der PHP-Journey von Coddy — Lektion 24 von 71.
PHP bietet zwei Möglichkeiten, um zu prüfen, ob Werte gleich sind: den Gleichheitsoperator (==) und den Identitätsoperator (===). Das Verständnis des Unterschieds ist entscheidend für das Schreiben zuverlässigen Codes.
Der Gleichheitsoperator (==) vergleicht Werte, nachdem sie in denselben Typ umgewandelt wurden. Dies wird als „lockere Vergleichung“ bezeichnet:
<?php
var_dump(5 == "5"); // bool(true) - String in Zahl umgewandelt
var_dump(0 == false); // bool(true) - beide werden zu 0
var_dump(1 == true); // bool(true) - beide werden zu 1
?>Der Identitätsoperator (===) vergleicht sowohl Wert als auch Typ. Es findet keine Konvertierung statt, daher müssen beide exakt übereinstimmen:
<?php
var_dump(5 === "5"); // bool(false) - int vs string
var_dump(5 === 5); // bool(true) - same type and value
var_dump(0 === false); // bool(false) - int vs bool
?>Für Vergleiche auf „Ungleich“ verwenden Sie != (lockere) oder !== (strenge):
<?php
var_dump(5 != "5"); // bool(false) - Werte sind gleich
var_dump(5 !== "5"); // bool(true) - Typen unterscheiden sich
?>Als Best Practice sollten Sie === und !== bevorzugen, um unerwartete Überraschungen durch Typkonvertierungen zu vermeiden.
Aufgabe
EinfachLesen Sie zwei Werte von der Eingabe: eine Zahl (als String) und eine Ganzzahl.
Verwenden Sie die Gleichheits- und Identitätsoperatoren, um die folgenden Vergleiche auszuwerten und das Ergebnis jedes mit var_dump() auszugeben, jeweils in einer neuen Zeile:
- Überprüfen Sie, ob der String-Wert der Ganzzahl mit lockerem Vergleich entspricht (
==) - Überprüfen Sie, ob der String-Wert der Ganzzahl mit strengem Vergleich entspricht (
===) - Überprüfen Sie, ob der String-Wert der Ganzzahl mit lockerem Vergleich nicht entspricht (
!=) - Überprüfen Sie, ob der String-Wert der Ganzzahl mit strengem Vergleich nicht entspricht (
!==)
Hinweis: Behalten Sie den ersten Wert als String (nicht umwandeln). Wandeln Sie den zweiten Wert in eine Ganzzahl um.
Beispiel:
Wenn die Eingaben 42 und 42 sind, sollte die Ausgabe sein:
bool(true)
bool(false)
bool(false)
bool(true)Erklärung:
"42" == 42ist wahr (Werte sind gleich nach Typumwandlung)"42" === 42ist falsch (String vs int - unterschiedliche Typen)"42" != 42ist falsch (Werte sind gleich)"42" !== 42ist wahr (Typen sind unterschiedlich)
Spickzettel
PHP hat zwei Wege, Werte zu vergleichen:
Gleichheitsoperator (==) - lockere Vergleich, der Werte vor dem Vergleichen in denselben Typ umwandelt:
<?php
var_dump(5 == "5"); // bool(true) - string converted to number
var_dump(0 == false); // bool(true) - both become 0
var_dump(1 == true); // bool(true) - both become 1
?>Identitätsoperator (===) - strenger Vergleich, der sowohl Wert als auch Typ überprüft:
<?php
var_dump(5 === "5"); // bool(false) - int vs string
var_dump(5 === 5); // bool(true) - same type and value
var_dump(0 === false); // bool(false) - int vs bool
?>Ungleichheitsoperatoren:
<?php
var_dump(5 != "5"); // bool(false) - values are equal (loose)
var_dump(5 !== "5"); // bool(true) - types differ (strict)
?>Beste Praxis: Verwenden Sie === und !==, um unerwartete Typumwandlungen zu vermeiden.
Probier es selbst
<?php
// Eingabe lesen
$stringValue = trim(fgets(STDIN));
$intValue = intval(trim(fgets(STDIN)));
// TODO: Schreiben Sie Ihren Code unten
// Verwenden Sie var_dump(), um das Ergebnis jedes Vergleichs in einer neuen Zeile auszugeben:
// 1. Lockere Gleichheit (==)
// 2. Strenge Gleichheit (===)
// 3. Lockere Ungleichheit (!=)
// 4. Strenge Ungleichheit (!==)
?>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