PHP 4.3

4.2.1 Vergleich von unterschiedlichen Variablentypen

Im vorherigen Abschnitt wurde Ihnen die allgemeine Anwendung von Vergleichsoperatoren erläutert. In den Beispielen wurden jeweils Daten des gleichen Typs (Ganzzahlen) überprüft. Wenn Sie nun aber zwei Werte unterschiedlicher Typen vergleichen möchten, bietet sich die Verwendung des Operators === an. Dieser Vergleichsoperator überprüft sowohl den Typ des Wertes als auch den Wert der Variablen.

Zuerst weisen wir zwei Variablen zu, die in der darauf folgenden if-Anweisung mit dem Vergleichsoperator miteinander verglichen werden:

Vergleichsoperator, der Inhalt und Typ auf Übereinstimmung prüft:
<?php

  $a = 50;
  $b = 50;

  if($a === $b) {
    echo "Die Werte und Typen für \$a = " , $a , " und \$b = " , $b , " sind identisch.";
  } else {
    echo "Die Werte und Typen für \$a = " , $a , " und \$b = " , $b , " sind nicht identisch."; }

?>


Wenn innerhalb der if-Anweisung die Bedingung erfüllt ist, d.h. $a und $b tatsächlich identisch sind, wird die Anweisung ausgeführt, die innerhalb der geschweiften Klammern steht.

Browserausgabe:

  Die Werte und Typen für $a = 50 und $b = 50 sind identisch.
            

Wenn allerdings die Variable $b den Wert 50.0 hat, würde es sich um einen Variablenwert vom Typ double handeln und die Bedingung für das if würde nicht mehr zutreffen.

Das Gegenstück zum obigen Vergleichsoperator ist das !== , das die Variablen auf Ungleichheit überprüft.

Es werden im Folgenden die auf Gleichheit (Ungleichheit) prüfenden Operatoren nochmals zusammenhängend aufgelistet:

== Liefert true zurück, falls die Operanden den gleichen Wert aufweisen.
!= Liefert true zurück, falls die Operanden nicht den gleichen Wert aufweisen.
=== Liefert true zurück, falls die Operanden den gleichen Typ aufweisen und die Werte gleich sind.
!== Liefert true zurück, falls die Operanden nicht vom gleichen Typ sind oder die Werte nicht gleich sind.


Das folgende Beispiel setzt diese Operatoren ein.

Vergleichsoperatoren, die den Inhalt bzw. Inhalt und Typ auf Übereinstimmung prüfen:
<?php

  $a = 50;
  $b = 50.0;

  if($a == $b) {
    echo "Die Werte für \$a und \$b sind gleich<br>";
  }
  if($a != $b) {
    echo "Die Werte für \$a und \$b sind nicht gleich<br>";
  }
  if($a === $b) {
    echo "Die Werte und Typen für \$a und \$b sind identisch<br>";
  }
  if($a !== $b) {
    echo "Die Werte oder Typen für \$a und \$b sind nicht identisch<br>";
  }

?>


Browserausgabe:

  Die Werte für $a und $b sind gleich
  Die Werte oder Typen für $a und $b sind nicht identisch
  

Natürlich ordnen sich auch die Vergleichsoperatoren in die PHP-Operatorenrangfolge ein. Zur Erinnerung:
Die Rangfolge bestimmt, in welcher Reihenfolge PHP Operationen durchführt. Dazu gehören nicht nur Verknüpfungen von Zeichenketten und mathematische Operationen, sondern auch die Prüfung von Bedingungen. Sind die eingesetzten Operatoren gleichrangig, entscheidet sich anhand der Assoziativität, welcher Teil der Bedingungsprüfung vorrangig behandelt wird.
Vergleichsoperatoren besitzen im Gegensatz zu allen anderen bisher vorgestellten Operatoren keine Assoziativität. Das bedeutet, dass Sie nicht so etwas schreiben können:

if ($a == $b == $c) {...}
oder
if ($a < $b < $c) {...}

(Selbst wenn die Vergleichsoperatoren assoziativ wären, ergäbe sich hier nicht die aus der Mathematik gewohnte Bedeutung - dazu später noch mehr.)

Lassen Sie uns die bisherige Rangfolgetabelle vervollständigen:

Operator Assoziativität
++ --           rechts
* / %         links
+ - .         links
< <= > >=       keine Richtung
== != === !==       keine Richtung
= += -= *= /= %= .= links

Kommentare (0)

Ihr Kommentar

Name