1
PHP-Anfänger stehen oft vor der Frage, wann man denn ein, zwei oder drei Gleichheitszeichen in einem if Statement verwendet.
Meistens sieht man Vergleiche mit zwei Gleichheitszeichen:
Die Ausgabe hierbei ist folgende:
Da es sich bei den beiden Variablen um zwei verschiedene Typen handelt, nämlich bei $a um einen Integer und bei $b um einen String, wandelt PHP für einen Vergleich auch $b in einen Integer um. Hierbei wird die Zahl am Anfang des Strings extrahiert. Der Vergleich lautet also "2 == 2", weshalb ein "Ja" ausgegeben wird.
Wenn drei Gleichheitszeichen verwendet werden, müssen dagegen auch die Typen übereinstimmen:
Ausgabe:
Der Integer 3 entspricht nicht dem String '3 Gleichheitszeichen', also wird ein "Nein" ausgegeben.
Ein einzelnes Gleichheitszeichen wird nun nicht für einen Vergleich, sondern für eine Zuweisung verwendet:
Ausgabe:
Die zweite Zeile der Ausgabe zeigt, dass $a nun den String von $b enthält. Lässt man versehentlich ein Gleichheitsszeichen weg, führt dies dazu, dass die erste Variable durch die zweite (ungewollt) überschrieben wird. Ein Fehler, der mitunter auch schon mal ein Sicherheitslücke öffnen kann!
Ein Vergleich wird aber auch hier durchgeführt: fehlt ein Vergleichsoperator == oder ===, so wird ein Vergleich mit der boolschen Variable true vorgenommen. Ausführlich könnte man hier also auch schreiben:
Meistens sieht man Vergleiche mit zwei Gleichheitszeichen:
<?php
$a = 2;
$b = '2 Gleichheitszeichen';
if ($a == $b) {
echo 'Ja';
} else {
echo 'Nein';
}
echo '<br>';
echo $a;
echo '<br>';
echo '<br>';
Die Ausgabe hierbei ist folgende:
Ja
2
Da es sich bei den beiden Variablen um zwei verschiedene Typen handelt, nämlich bei $a um einen Integer und bei $b um einen String, wandelt PHP für einen Vergleich auch $b in einen Integer um. Hierbei wird die Zahl am Anfang des Strings extrahiert. Der Vergleich lautet also "2 == 2", weshalb ein "Ja" ausgegeben wird.
Wenn drei Gleichheitszeichen verwendet werden, müssen dagegen auch die Typen übereinstimmen:
<?php
$a = 3;
$b = '3 Gleichheitszeichen';
if ($a === $b) {
echo 'Ja';
} else {
echo 'Nein';
}
echo '<br>';
echo $a;
echo '<br>';
echo '<br>';
Ausgabe:
Nein
3
Der Integer 3 entspricht nicht dem String '3 Gleichheitszeichen', also wird ein "Nein" ausgegeben.
Ein einzelnes Gleichheitszeichen wird nun nicht für einen Vergleich, sondern für eine Zuweisung verwendet:
<?php
$a = 1;
$b = '1 Gleichheitszeichen';
if ($a = $b) {
echo 'Ja';
} else {
echo 'Nein';
}
echo '<br>';
echo $a;
echo '<br>';
echo '<br>';
Ausgabe:
Ja
1 Gleichheitszeichen
Die zweite Zeile der Ausgabe zeigt, dass $a nun den String von $b enthält. Lässt man versehentlich ein Gleichheitsszeichen weg, führt dies dazu, dass die erste Variable durch die zweite (ungewollt) überschrieben wird. Ein Fehler, der mitunter auch schon mal ein Sicherheitslücke öffnen kann!
Ein Vergleich wird aber auch hier durchgeführt: fehlt ein Vergleichsoperator == oder ===, so wird ein Vergleich mit der boolschen Variable true vorgenommen. Ausführlich könnte man hier also auch schreiben:
if (($a = $b) == true) {
echo 'Ja';
} else {
echo 'Nein';
}