Homepage-Webhilfe Event-Banner

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;
?>

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²';
?>
Vorschau

Ü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 -

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');
?>
Vorschau

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);
?>
Vorschau

Ü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.


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);
?>
Vorschau

Übrigens: An Stelle der Funktion pow() kann ab der PHP Version 5.6 auch der Operator ** benutzt werden.

Um unsere Webseite für Sie optimal zu gestalten und fortlaufend verbessern zu können, verwenden wir Cookies. Durch die weitere Nutzung der Webseite stimmen Sie der Verwendung von Cookies zu. Weitere Informationen OK