Zahlen und Mathematik
Zahlen können in PHP direkt angegeben werden. Die Angabe kann dezimal, hexadezimal, oktal oder binär erfolgen. Um die
unterschiedlichen Angaben voneinander unterscheiden zu können, muss einer hexadezimalen Zahl 0x
vorangestellt
werden, einer oktalen Zahl eine 0
und einer binären Zahl 0b
. Hierzu ein kurzes Beispiel:
<?php $dez = 13579; $hex = 0x12AB; $okt = 0135; $bin = 0b1011001; ?>
Operatoren
Wie auch in der Mathematik, gibt es in Programmiersprachen sogenannte Operatoren. Bisher haben wir ja bereits den
Zuweisungsoperator =
kennengelernt. Nun wollen wir uns den mathematischen Operatoren widmen. Hier stehen uns
+
für die Addition, -
für die Subtraktion, *
für die Multiplikation
und /
für die Division zur Verfügung. Des Weiteren gibt es den in der Mathematik eher selten verwendeten
Operator %
, welcher den sogenannten Modulo darstellt. Modulo berechnet den Rest aus einer Division. So ergibt
z. B. 10 % 3
den Wert 1
. Das folgende Beispiel zeigt die Berechnung des Umfangs und des Flächeninhalts
von einem Rechteck.
<?php $a = 8; $b = 3; $umfang = (2 * $a) + (2 * $b); echo 'Umfang: '; echo $umfang; echo 'cm <br />'; $flaeche = $a * $b; echo 'Fläche: '; echo $flaeche; echo 'cm²'; ?>
Übrigens: Natürlich könnten wir im obigen Beispiel (und auch in den nächsten Beispielen) unsere Ausgaben mit einem
echo
-Befehl und der Komma-Notation durchführen. Wir haben uns für diese Notation entschieden, da diese für Sie am
Anfang vermutlich etwas leichter zu lesen ist.
Die Operatoren bzw. eine Variablenzuweisung mit mathematischer Berechnung können verkürzt werden. Dies ist jedoch nur
möglich, wenn der Wert der Variablen zugewiesen wird, welcher auch als 1. Wert in der Berechnung verwendet wird. Hier ein
Beispiel: a = a + b
kann mit a += b
verkürzt werden und a = a * b
kann mit a *= b
verkürzt werden. Für das Addieren oder Subtrahieren der Zahl 1 zu bzw. von einer Variablen (z. B. zum Zählen) gibt es eine noch
kürzere Schreibweise: a++
und a--
. Bei diesen Operatoren spricht man auch von der Inkrementierung
(Addition um 1) und Dekrementierung (Subtraktion um 1). Des Weiteren gibt es die Schreibweise ++a
und
--a
. Der Unterschied zwischen a++
und ++a
bzw. zwischen a--
und --a
ist, dass wenn der Wert der Operation einer anderen Variablen zugewiesen oder einer anderen Funktion übergeben wird, bei
a++
und a--
der „alte Wert“ (vor der Operation) zurückgegeben wird und bei ++a
und
--a
hingegen der „neue Wert“ (nach der Operation). Die folgende Tabelle zeigt eine Übersicht über verkürzte
Schreibweisen und deren Bedeutung:
Name | Formel | Formel (kurz) | Formel (schrittweise) | ||||||
---|---|---|---|---|---|---|---|---|---|
Addition | x = y + z | x += y | ≙ | x = x + y | x++ | ≙ | x += 1 | ≙ | x = x + 1 |
Subtraktion | x = y - z | x -= y | ≙ | x = x - y | x-- | ≙ | x -= 1 | ≙ | x = x - 1 |
Multiplikation | x = y * z | x *= y | ≙ | x = x * y | - | ||||
Division | x = y / z | x /= y | ≙ | x = x / y | - | ||||
Modulo | x = y % z | x %= y | ≙ | x = x % y | - |
Konvertierung
Um eine Zeichenkette oder eine andere Variable „sicher“ in eine Zahl umzuwandeln, gibt es die Funktionen intval()
und floatval()
. intval()
konvertiert dabei den im Parameter übergebenen Wert in den Datentyp
integer
, wo hingegen floatval()
eine Konvertierung in den Datentyp float
durchführt.
Der Funktion intval()
kann optional ein zweiter Parameter übergeben werden, welcher die Basis darstellt.
Der Standardwert ist 10
(für eine Dezimalzahl).
<?php echo intval('23s'); echo '<br />'; echo intval('abc'); echo '<br />'; echo intval('74'); echo '<br /><br />'; echo floatval('3.1416'); echo '<br />'; echo floatval('Hallo'); echo '<br />'; echo floatval('50,1'); ?>
Zufallszahlen
Mit der Funktion mt_rand()
ist es möglich, positive Zufallszahlen (nur Ganzzahlen) zu generieren. Die
Funktion kann entweder ohne Parameter aufgerufen werden oder mit einem Minimal- und Maximalwert. Beide Werte geben
dabei die Inklusivgrenze an. Der mögliche Maximalwert, welcher auch beim Aufruf von mt_rand()
ohne Parameter
verwendet wird, kann mittels der Funktion mt_getrandmax()
ermittelt werden. Die Funktion mt_srand()
setzt den Startwert (engl. seed) für den Zufallsgenerator. Der Aufruf dieser Funktion ist jedoch nicht
erforderlich.
<?php echo mt_getrandmax(); echo '<br /><br />'; echo mt_rand(); echo '<br />'; echo mt_rand(10, 20); ?>
Übrigens: Der „Zusatz“ mt_
im Funktionsnamen steht für Mersenne-Twsiter, bei welchem es sich um
den „neueren“ und „besseren“ Zufallsgenerator von PHP handelt. Der alte libc-Zufallsgenerator ist weiterhin über die Funktionen
rand()
, getrandmax()
und srand()
verfügbar. Der alte Zufallsgenerator kann laut
PHP-Dokumentation seltsame und unerwartete Verhaltensweisen aufzeigen, zudem generiert der MT-Zufallsgenerator die Zahlen um
ein 4-faches schneller.
Mathematische Funktionen
PHP bietet auch einige vordefinierte mathematische Funktionen an. Hier sind zum einen die Funktion floor()
,
ceil()
und round()
zu erwähnen, mit welchen Gleitkommazahlen ab- und aufgerundet werden
können. floor()
rundet eine Zahl auf die nächstkleinere Ganzzahl ab, ceil()
hingegen auf die
nächstgrößere Ganzzahl auf. Die Funktion round()
führt eine kaufmännische Rundung durch. Demnach ergibt
round(3.4)
den Wert 3
und round(3.5)
den Wert 4
. Die Funktionen
min()
und max()
können dazu verwendet werden, den Minimal- oder Maximalwert aus mehreren Zahlen
zu bestimmen. Dabei kann der Funktion entweder ein Array (dazu im Thema Arrays mehr) oder beliebig
viele Parameter übergeben werden. Als Rückgabe geben die Funktionen den kleinsten bzw. größten gefundenen Wert zurück. Die
Funktion sqrt()
kann dazu genutzt werden, die Quadratwurzel (engl. square root) zu berechnen. Mit
der Funktion pow()
kann eine Potenz berechnet werden. Hierfür wird der Funktion die Basis (1. Parameter)
und der Exponent (2. Parameter) übergeben.
<?php echo floor(3.4); echo '<br />'; echo ceil(3.4); echo '<br />'; echo round(3.4); echo '<br /><br />'; echo min(3, 6, 2, 7, 5, 9); echo '<br />'; echo max(3, 6, 2, 7, 5, 9); echo '<br /><br />'; echo pow(9, 2); echo '<br />'; echo sqrt(9); ?>
Übrigens: An Stelle der Funktion pow()
kann ab der PHP Version 5.6 auch der Operator **
benutzt
werden.