Erst durch die Verknüpfung von Werten aus unterschiedlichen Quellen (Konstanten, Variablen, Funktionsergebnisse) entsteht die volle Funktionalität eines PHP-Skripts. Jede Programmiersprache bietet dazu ein Set an Basisfunktionen (oder Operationen) an, die vom Programmierer sofort benutzt werden können. Die häufigsten dieser Operationen wie Addition, Multiplikation, Wertevergleich oder logische Verknüpfungen werden durch eine Kurzschreibweise realisiert, die man Operator nennt. Die Werte, auf die der Operator wirkt, nennt man Operanden. Show Inhaltsverzeichnis
Überblick[Bearbeiten]Grundsätzlich teilt man Operatoren danach ein, wie viele Werte sie verknüpfen können.
Operatoren erwarten, dass die ihnen übergebenen Werte bestimmte Datentypen haben. Der + Operator zum Beispiel ist dazu da, Zahlen zu addieren. Bekommt er etwas anderes, versucht PHP, diese anderen Werte in eine Zahl umzuwandeln. Ist das nicht möglich, endet das Script mit einem Fatal Error. Das Ergebnis eines Operators ist ein neuer Wert, der überall dort verwendet werden kann, wo PHP Werte erwartet. Zum Beispiel auch als Eingabe für einen weiteren Operator. Verwendung mehrerer Operatoren <?php echo $a + $b + $c; ?> In diesem Beispiel würde PHP zunächst $a + $b verarbeiten. Die ermittelte Summe dient dann als Eingabe für den zweiten + Operator, der $c hinzuaddiert. Werden in einer Programmiersprache Werte, Variablen und Operatoren eingesetzt, um neue Werte zu bestimmen, spricht man von einem Ausdruck (engl. Expression). Das hat nichts mit einem Drucker zu tun, sondern ist im Sinne von „sich ausdrücken, formulieren“ zu verstehen. Zwei wichtige Eigenschaften von Operatoren, die Sie auch aus der Mathematik kennen, sind ihre Priorität und Assoziativität. Diese Eigenschaften legen fest, in welcher Reihenfolge die Operatoren in einem Ausdruck verarbeitet. Findet PHP in einem Ausdruck Operatoren mit unterschiedlicher Priorität vor, verarbeitet es
diejenigen mit höherer Priorität zuerst. Ein Beispiel dafür ist die Regel "Punkt- vor Strichrechnung": Wenn die von PHP durch Priorität und Assoziativität festgelegte Reihenfolge nicht dem entspricht, was Ihr Programm tun soll, können Sie Klammern setzen. Ein Ausdruck, der in Klammern steht, wird immer als erstes ausgewertet. Wenn Sie Klammern ineinander schachteln, wertet PHP die innerste Klammer zuerst aus. Im Folgenden werden die wichtigsten PHP Operatoren angesprochen. Arithmetische Operatoren[Bearbeiten]Numerische Berechnungen führen Sie mit Hilfe von Rechenoperatoren durch. Diese stehen für die Variablentypen integer und float zur Verfügung. Notieren Sie zwischen den Operanden
Um das Vorzeichen eines Wertes zu wechseln, setzen Sie ein Es gelten die üblichen Rechenregeln. Das bedeutet: Wie in der Mathematik üblich, können Sie Klammern setzen, um eine andere Rangfolge der Operationen festzulegen. für Berechnungen var $zwei = 1 + 1, $ergebnis = $zahl1 + $zahl2, $Nix = 81 / 3 - 27, $wenigerAlsNix = 81 / (3 - 27), $SinnDesLebens = 6 * 7, $ergibtAuchSinn = 84 / 2, $mitMinus = 35 - -7; $wiederNix = 36 * 37 % 666; Zeichenketten-Operator[Bearbeiten]In PHP kann man mit dem Punktoperator Verkettung von Zeichenketten <?php echo 'self' . 'html'; // gibt den String "selfhtml" aus. ?> Beachten Sie: PHP unterscheidet sich an dieser Stelle von anderen Programmiersprachen wie JavaScript. Die Stringverketttung in JavaScript erfolgt mittels des + Operators. Wenn Sie das in PHP tun( Wertzuweisungs-Operatoren[Bearbeiten]Wie schon im Abschnitt Grundlagen angesprochen, wird in PHP das Speichern von Werten in
Variablen mit Hilfe des Wertzuweisungs-Operators Zuweisen von Werten an Variablen <?php $a = 3; $b = "Hallo selfhtml"; ?> Man nennt den Operanden rechts vom Das Ergebnis des Zuweisungsoperators ist der zugewiesene Wert:
würde 3 ausgeben. Ein häufiges Konstrukt ist das Aktualisieren einer Variablen, z. B. indem man die um 1 erhöht, oder verdoppelt. Das kann man so schreiben:
Aus mathematischer Sicht liest sich das wie Unsinn, $a und $a+3 können nicht gleich sein. Aus diesem Grund wird die Wahl von Wegen der Häufigkeit solcher Zuweisungen gibt es dafür eine Kurzschreibweise:
Außer Vergleichsoperatoren[Bearbeiten]Vergleichsoperatoren dienen zum Vergleichen zweier Werte. Solche Vergleiche werden vor allem für
bedingte Anweisungen und Schleifen benutzt. Als Ergebnis liefern Vergleichsoperatoren immer einen sogenannten booleschen Wert (Wahrheitswert) vom Typ boolean, d. h. entweder Sie können z. B. den Inhalt einer Variablen mit dem Inhalt einer anderen oder mit dem Ergebnis eines Ausdrucks vergleichen, indem Sie den gewünschten Vergleichsoperator zwischen den beiden Operanden notieren:
Beachten Sie: Es ist ein häufiger Fehler, den istgleich Operator für Vergleiche <?php $sinnDesLebens = 42; $alter = 8; if ($sinnDesLebens == 42) { echo "Richtig."; } if ($sinnDesLebens != 42) { echo "Falsch."; } if ($alter > 17) { echo "volljährig."; } else { echo "minderjährig"; } ?> Im Beispiel werden die Inhalte der Variablen Die Vergleichsoperatoren haben eine geringere Priorität als die arithmetischen Operatoren. Innerhalb der Vergleichsoperatoren haben Boolesche Operatoren[Bearbeiten]Mit booleschen Operatoren werden Wahrheitswerte verarbeitet. Man nutzt sie zumeist, um das Ergebnis mehrerer Vergleichsoperatoren zusammenzufassen.
Eine wichtige Eigenschaft der booleschen Operatoren
Der Unterschied zwischen
wird zuerst Würde man statt
Es gibt keine hochpriorisierte Form des Mit den tiefpriorisierten booleschen Operatoren ist eine Form von "natürlichsprachiger" Programmierung möglich. Anwendung von OR <?php $db = $db->query("SELECT id,name FROM Person") OR abortWithError("Prepare failed"); ?> <?php $db = $db->query("SELECT id,name FROM Person"); if ($db === FALSE) { abortWithError("Prepare failed"); } ?> Boolesche Operatoren und das NOT[Bearbeiten]Eine häufiges Problem beim Einsatz boolescher Operatoren ist der richtige Gebrauch von AND und OR, wenn negierte Bedingungen vorliegen. Eine Abfrage mit einem unwichtigen Then-Zweig <?php if ($datum == "" || $datum == "00.00.0000") { echo "Das Datum ist leer"; } else { echo "Zeige Werte ab $datum"; } ?> Dieses simple Beispiel soll einen Fall verdeutlichen, wo ein String aus einer Datumseingabe leer oder 00.00.0000 sein kann. In diesem Fall soll keine Verarbeitung erfolgen. Nun ist der echo im Then-Zweig des Negierte Abfrage - Then und Else tauschen die Rollen <?php if ( !($datum == "" || $datum == "00.00.0000") ) { echo "Zeige Werte ab $datum"; } else { echo "Das Datum ist leer"; } ?> Weil der Das Problem, das bleibt, ist die Formulierung der Bedingung im Negierte Abfrage - falsche Klammernauflösung <?php if ( $datum != "" || $datum != "00.00.0000" ) { echo "Zeige Werte ab $datum"; } ?> Die Wirkung dieses Programms ist, dass das Programm immer Werte anzeigt, auch wenn
Wir sind in die Falle der De Morganschen Gesetze getappt. Sie besagen, dass in einem Fall wie diesem AND und OR die Rollen tauschen müssen. Denn ein Satz wie „Bohnen ODER Spinat esse ich nicht“ meint ja: „Ich esse keine Bohnen UND ich esse keinen Spinat“. Ein „NICHT (bohnen ODER spinat)“ meint „WEDER bohnen NOCH spinat“, und dahinter steckt ein UND, kein ODER. Negierte Abfrage - korrekte Klammernauflösung <?php if ( $datum != "" && $datum != "00.00.0000" ) { echo "Zeige Werte ab $datum"; } ?> |