Vergleichsoperatoren wurden schon bei den Bedingungen für die Verzweigungen beziehungsweise Schleifen genutzt. Sie vergleichen zwei Werte miteinander und geben einen Wahrheitswert true
oder false
zurück.
Es existieren folgende Vergleichsoperatoren:
==
: für Gleichheit!=
: für Ungleichheit,===
: für Gleichheit und gleicher Typ,!==
: für Ungleichheit oder nicht gleicher Typ,<
: für ,,Kleiner als'',>
: für ,,Größer als'',<=
: für ,,Kleiner gleich'' und>=
: für ,,Größer gleich''.
Diese Operatoren werden beispielsweise in If-Bedingungsabfragen \index{If-Verzweigung} benutzt:
1 2 3 4 5 6 7 8 9 10 11 |
<?php $zahl = 1; if ($zahl == 1) { echo "Zahl ist eins. "; } if ($zahl >= 0) { echo "Zahl ist positiv. "; } ?> |
Wichtig ist, dass diese Operatoren nicht für Strings benutzt werden dürfen. Hierfür stellt PHP Funktionen zur Verfügung, die Strings miteinander vergleichen können:
Mit der Funktion strcmp($string1,$string2)
lassen sich zwei Strings vergleichen. Hierbei wird auf Groß- und Kleinschreibung während des Vergleiches geachtet. Soll die Groß- und Kleinschreibung ignoriert werden, so ist strcasecmp($string1,$string2)
zu nutzen. Bei Gleichheit geben diese Funktionen 0
zurück. Wird der erste String in der Sortierung früher als der zweite eingeordnet, wird ein Wert < 0
zurückgegeben. In dem Fall, dass der erste String jedoch später eingeordnet wird, wird ein Wert > 0
zurückgegeben.
Um nun das Ergebnis des Vergleiches zu prüfen, muss mit dem Gleichheitsoperator auf 0
geprüft werden:
1 2 3 4 5 6 7 8 9 10 |
<?php $string1 = "PHP"; $string2 = "php"; if (strcmp($string1,$string2) != 0) { echo ("Beide Strings sind unter der Berücksichtigung der Groß/Kleinschreibung ungleich."); } if (strcasecmp($string1,$string2) != 0) { echo ("Beide Strings sind ohne Berücksichtigung der Groß/Kleinschreibung ungleich."); } ?> |
Nur die erste If-Verzweigungen erzeugt die Ausgabe über Ungleichheit.
Wäre es nicht anschaulicher, bei dem unteren Beispiel nachstehende Variante zu verwenden?
if (strcasecmp($string1,$string2) == 0) {
echo („Beide Strings sind ohne Berücksichtigung der Groß/Kleinschreibung gleich.“);
}
Damit bei der Ausgabe nicht alles inkl. des neuen Prompts in einer Zeile erscheint, wäre doch jeweils ein \n ganz gut?