Menu
Coddy logo textTech

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.

challenge icon

Aufgabe

Einfach

Lesen 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:

  1. Überprüfen Sie, ob der String-Wert der Ganzzahl mit lockerem Vergleich entspricht (==)
  2. Überprüfen Sie, ob der String-Wert der Ganzzahl mit strengem Vergleich entspricht (===)
  3. Überprüfen Sie, ob der String-Wert der Ganzzahl mit lockerem Vergleich nicht entspricht (!=)
  4. Ü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" == 42 ist wahr (Werte sind gleich nach Typumwandlung)
  • "42" === 42 ist falsch (String vs int - unterschiedliche Typen)
  • "42" != 42 ist falsch (Werte sind gleich)
  • "42" !== 42 ist 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 (!==)

?>
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Grundlagen