Anzeige
Tutorialbeschreibung

PHP - Teil 07 - Rechenoperationen und Operatoren

PHP - Teil 07 - Rechenoperationen und Operatoren

PHP stellt insgesamt acht Datentypen zur Verfügung. In diesem Tutorial werden einige Datentypen kurz vorgestellt, sie werden euch aber – auch im Rahmen dieser Tutorialreihe – immer wieder begegnen.

Zahlen

PHP unterscheidet zwischen Ganzzahlen und Fließkommazahlen. Ganzzahlige Werte sind Zahlen ohne Nachkommastelle. Das können positive und negative Zahlen sowie die Null sein. In der Programmierwelt spricht man im Zusammenhang mit Ganzzahlen üblicherweise von Integer.

Fließkommazahlen sind solche, die eine Nachkommastelle haben. Bei diesen Fließkommazahlen werden in PHP – anders als es der Name vielleicht vermuten lässt – zum Trennen der Ziffern übrigens keine Kommata verwendet. Stattdessen kommt der Punkt zum Einsatz.
4.5

PHP kennt zunächst einmal die vier bekannten Grundrechenarten Addition, Subtraktion, Multiplikation und Division.
<?php
$wert1 = 20;
$wert2 = 15;
echo $addieren = $wert1 + $wert2 ;
echo '<br />';
echo $subtrahieren = $wert1 - $wert2;
echo '<br />';
echo $multiplizieren = $wert1 * $wert2;
echo '<br />';
echo $dividieren = $wert1 / $wert2;
?>

 

 

Das führt zu folgender Ausgabe:

Bilder


 

 
Zusätzlich gibt es einen arithmetischen Operator, den sogenannten Modulo (%). Der Modulo zweier Zahlen ist der Rest, der dann übrig bleibt, wenn die erste Ziffer durch die zweite geteilt wird.
<?php 
$ausgabe = 10 % 6;
echo $ausgabe;
?>

Die Ausgabe sieht folgendermaßen aus:

Bilder



Die 6 passt exakt einmal in die 10. Der Rest ergibt den Wert 4.


 

Boolesche Werte

Bei den booleschen Werten gibt es immer nur zwei verschiedene Varianten: true und false bzw. wahr und falsch. Interessant sind boolesche Werte immer dann, wenn zwei oder mehrere Werte miteinander verglichen werden sollen.
Wert1 == Wert2

Hier wird mittels des Gleichheitsoperators (==) überprüft, ob $Wert1 und $Wert2 identisch sind. Sollte das der Fall sein, ist das Ergebnis des Vergleichs true, also wahr. Sind $Wert1 und $Wert2 hingegen unterschiedlich, wird false zurückgeliefert. Die Ergebnisse solcher Vergleiche werden in PHP üblicherweise zur Ablaufsteuerung via if-else-Konstruktionen usw. verwendet. So kann man auf diese Weise zum Beispiel Formulareingaben überprüfen.
<form action="upload.php" method="post">
<input type="password" name="passwort" />
<input type="submit" value="Login" />
</form>

Hier wurde ein einfaches Login-Feld definiert.

Bilder



 
Nur dann, wenn als Passwort geheim eingetragen wird, wird der Benutzer mit der Meldung Herzlich willkommen im internen Bereich begrüßt. Wird hingegen ein falsches Passwort notiert, gibt es eine entsprechende Fehlermeldung.
<?php
 $passwort = $_POST["passwort"];
 if($passwort=="geheim"){
    echo "Herzlich willkommen im internen Bereich";
 }
 else {
    echo "Das Passwort ist leider falsch";
 }
?>

Liefert die Abfrage $passwort=="geheim" den Wert true, bedeutet dies, dass in das Feld passwort der Wert geheim eingetragen wurde. Anderenfalls – und hier würde dann der else-Zweig greifen – liefert die boolesche Abfrage den Wert false.

Mehrere Bedingungen lassen sich über logische Operatoren miteinander verknüpfen. Die auf diese Weise verknüpften Bedingungen besitzen dann einen gemeinsamen Wahrheitswert true oder false.

Um zu überprüfen, ob zwei Bedingungen gemeinsam wahr sind, wird das logische Und in Form des Schlüsselworts and oder das doppelte kaufmännische Und (&&) verwendet.
$a && $b

In diesem Fall wird überprüft, ob Bedingung $a und Bedingung $b erfüllt sind. Nur wenn das tatsächlich bei beiden der Fall ist, wird true geliefert.

Mit dem logischen Oder lassen sich ebenfalls zwei Bedingungen miteinander verknüpfen. Die Bedingungen gelten dann gemeinschaftlich als wahr, wenn wenigstens eine der Bedingungen wahr ist. Das logische Oder ist in PHP durch das Schlüsselwort or oder die Doppel-Pipe (||) gekennzeichnet.
$a or $b

In diesem Fall wäre die Bedingung beispielsweise auch dann erfüllt, wenn $a wahr, $b aber falsch wäre. Die Bedingung wäre allerdings auch dann erfüllt, wenn $a und $b wahr sind. Anders verhält es sich mit dem logischen exklusiven Oder. Dieses Oder wird durch den Schlüsselwort xor gekennzeichnet. Es legt fest, dass entweder die eine oder die andere Bedingung wahr sein muss. Beide dürfen allerdings nicht gleichzeitig wahr sein.
$a xor $b

In diesem Fall wäre die Bedingung beispielsweise erfüllt, wenn $a wahr und $b falsch wäre. Nicht erfüllt wäre sie hingegen, wenn $a und $b wahr sind.

Der letzte Operator im Zusammenhang mit den booleschen Werten ist das logische Nicht. Dieser wird in PHP durch das Ausrufezeichen (!) gekennzeichnet. Dieser Operator verneint den Wert einer Bedingung, wodurch aus true demnach false wird.
!$b

Die vorgestellten Operatoren lassen sich beliebig miteinander verknüpfen. Entscheidend ist hierbei jedoch die richtige Klammerung. Zunächst die allgemeine Syntax, bei der von drei Bedingungen $a(falsch), $b(falsch) und $c(wahr) ausgegangen wird.
$a && $b || $c

In diesem Fäll ergäbe die Verknüpfung den Wert true. Denn die Auswertung von $a && $b ergäbe zwar zunächst false, die Auswertung von false || $c ergäbe dann aber wieder true. Durch entsprechende Klammerung könnte man allerdings auch zuerst $b und $c miteinander verknüpfen. Die Syntax sähe dann folgendermaßen aus:
$a && ($b || $c)

Das Ergebnis wäre in diesem Fall false.

Ein etwas detaillierteres Beispiel soll die Klammerthematik anschaulicher machen.
<?php
   $buecher = 5;
   $dvds = 4;
   $cds = 8;
   if ($buecher == 5 && $cds == 7) {
     echo "Es sind 5 Bücher und 7 CDs.";
   } elseif ($buecher == 5 || $cds == 8 && $buecher == 2) {
     echo "Es sind 5 Bücher oder 8 CDs und 2 Bücher.";
   } elseif (($buecher == 5 and $cds == 3) xor $dvds == 8) {
     echo "Es sind 5 Bücher und 3 CDs oder 8 DVDs. Aber nicht 5 Bücher, 3 CDs und 8 DVDs.";
   }
?>

 

 

Hier wurden verschiedene Variablen deklariert, denen Zahlenwerte zugewiesen wurden. Nun soll überprüft werden, welche der im Skript definierten Aussagen korrekt sind. Ruft man das Skript auf, ergibt sich folgendes Bild:

Bilder


 

 
Offensichtlich ist also ausschließlich die zweite Aussage richtig. Dazu hat auch die Operatorenreihenfolge beigetragen. Denn tatsächlich besitzt der Operator && eine höhere Gewichtung als der Operator ||. Für das vorliegende Beispiel bedeutet dies, dass zunächst überprüft wird, ob es 8 CDs und 2 Bücher gibt. Obwohl der rechte Teil der Bedingung false liefert (es sind ja tatsächlich 5 Bücher), liefert die Gesamtbedingung dennoch true, da im zweiten Schritt das logische Oder greift.

Man könnte die zweite Aussage der Übersichtlichkeit halber auch mit Klammern ausstatten. Das sähe dann folgendermaßen aus:
($buecher == 5 ||( $cds == 8 && $buecher == 2))

Experimentiert ruhig etwas mit der Klammerung der Operatoren. So seht ihr am besten, wie die Klammern das Ergebnis beeinflussen.

DVD-Werbung
Kommentare
Achtung: Du kannst den Inhalt erst nach dem Login kommentieren.
Portrait von franzg
  • 14.05.2017 - 17:13

Interessanter Inhalt sehr gut erklärt! Danke!

Portrait von tipsi_95
  • 07.10.2016 - 13:13

Vielen Dank, tolles Video.

Portrait von dmtw2107
  • 16.11.2013 - 09:47

verständlich und toll erklärt danke für das tutorial

Portrait von helgeschneider
  • 29.03.2011 - 12:09

Danke für den Überblick den du in deinem Tutorial aufzeigst.

x
×
×