1. Um einen beliebigen Wert erhöhen/verringern bzw. Addition/Subtraktion
Um einen Integer oder einen Float $x um einen beliebigen Wert $y zu erhöhen, kann entweder die Schreibweise $x = $x + $y, oder $x += $y verwendet werden. Dabei ist die letztgenannte nur eine kürzere Form der ersten. Beide erzeugen das selbe Ergebnis. $y muss nicht zwangsweise eine Variable sein, ein „normaler” Wert ist ebenfalls erlaubt. Ebenso muss $y bei der ersten Schreibweise nicht am Ende stehen. $x = $y + $x und $x = $x + $y sind demnach identisch. Weitere Werte (etwa $x = $x + $y + $z + $a) sind erlaubt.
Beispiel:
<?php // Zahl initialisieren $a = 0; // zwei Mal um jeweils 5 erhoehen $a = $a + 5; // erste Schreibweise $a += 5; // zweite, kurze Schreibweise // ausgeben var_dump($a); ?>
int(10)
Die Schreibweisen zum Verringern um einen bestimmten Wert sind äquivalent zur Addition:
<?php $a = 0; $a = $a - 5; $a -= 5; var_dump($a); ?>
int(-10)
Vorsichtig muss man bei der verkürzten Schreibweise sein, dann $x += $y ist nicht das selbe wie $x =+ $y: Letzteres weist $x den Wert +$y zu, ersteres erhöht $x um $y (analoges gilt für $x =- $y):
<?php $a = 100; $b = 100; $a =+ 1; $b =- 1; var_dump($a, $b); // 1, -1 ?>
int(1) int(-1)
2. Spezielle Syntax für exakt +1 / -1
Sehr häufig muss man eine Zahl um exakt eins erhöhen. Für diese wiederkehrende Aufgabe wurde eine spezielle, sehr kurze Syntax eingeführt, nämlich das doppelte Pluszeichen:
<?php $a = 0; // darf sowohl vor als auch hinter der Zahl stehen $a++; ++$a; var_dump($a); ?>
int(2)
Analog kann ein doppeltes Minuszeichen verwendet werden, um den Wert um exakt eins zu verringern:
<?php $a = 0; $a--; --$a; var_dump($a); ?>
int(-2)
Der Unterschied zwischen $a++ und ++$a ist, dass bei Verwendung von ++$a immer $a zuerst um eins erhöht wird und erst danach für weitere Operationen zur Verfügung steht. Im nächsten Beispiel werden $a und $b jeweils mit 0 initialisiert, dann über $a++ und ++$b um eins erhöht und zugleich per echo ausgegeben. Während bei $a++ nur eine 0 ausgegeben wird, erzeugt ++$b die Ausgabe „1”, denn $b wird zuerst um eins erhöht und erst danach ausgegeben.
<?php $a = 0; $b = 0; echo($a++."\n"); echo(++$b."\n"); ?>
0 1
3. Mit einem beliebigen Wert multiplizieren
Die Syntax zum Multiplizieren von Werten ist vergleichbar zu den zuvor im Rahmen der Addition und Subtraktion vorgestellten Schreibweisen:
<?php $a = 1; // lange und kurze Schreibweise, beide fuehren zum selben Ergebnis $a = $a * 6; $a *= 6; var_dump($a); ?>
int(36)
Genauso darf natürlich auch mit negativen Werten multipliziert werden:
<?php $a = 1; $b = 1; $a = $a * (-6); $b *= -6; var_dump($a, $b); ?>
int(-6) int(-6)
4. Mit einer Zehnerpotenz multiplizieren
Für das Multiplizieren mit 10 bzw. zum Verschieben des Kommas nach rechts können verschiedene Schreibweisen verwendet werden, welche einem mitunter das Nachzählen der Nullen ersparen:
<?php $a = 1; $b = 1; $c = 1; $a = $a * 100; // * 10^2 $b = $b * 1e3; // * 10^3 $c = $c * pow(10, 4); // * 10^4 var_dump($a, $b, $c); ?>
int(100) float(1000) int(10000)
Wandelt man die Syntax ab, um mit negativen Werten zu multiplizieren, muss man etwas genauer aufpassen, sonst verschiebt man nicht das Komma — wie nun gewünscht — nach links, sondern weiterhin nach rechts:
<?php $a = 1; $b = 1; $c = 1; $d = 1; $a = $a * (-10000); // * (-1)*10^4 $b = $b * (-1e4); // * (-1)*10^4 $c = $c * (1e-4); // * 10^(-4) $d = $d * pow(10, -4); // * 10^(-4) var_dump($a, $b, $c, $d); ?>
int(-10000) float(-10000) float(0.0001) float(0.0001)
5. Durch einen beliebigen Wert dividieren
Die Division erfolgt analog zur Addition, Subtraktion und Multiplikation. Wieder gibt es eine kurze und eine lange Schreibweise. Genauso kann man auch mit 1/x multiplizieren, wenn man durch x teilen will.
<?php $a = 10000; $a = $a / 6; $a /= 6; $a = $a * (1/6); var_dump($a); ?>
float(46.296296296296)
Gleiches ist mit negativen Zahlen möglich:
<?php $a = 10000; $a = $a / (-6); $a /= -6; $a =/ -6; $a = $a * (-1/6); var_dump($a); ?>
float(-46.296296296296)
6. Durch eine Zehnerpotenz dividieren / Komma um x Stellen nach vorne verschieben
Genauso wie bei der Multiplikation ist auch die Division durch Zehnerpotenzen möglich, um das Komma nach links zu verschieben:
<?php $a = 10000; $b = 10000; $c = 10000; $a = $a / 100; # / 10^2 $b = $b / 1e3; # / 10^3 $c = $c / pow(10, 4); # / 10^4 var_dump($a, $b, $c); ?>
int(100) float(10) int(1)
Und auch hier muss wieder beim Verwenden von negativen Zahlen darauf aufgepasst werden, die richtige Schreibweise zu verwenden, um das Komma nicht versehentlich in die falsche Richtung zu verschieben:
<?php $a = 10000; $b = 10000; $c = 10000; $d = 10000; $a = $a / (-10000); # / (-1)*10^4 $b = $b / (-1e4); # / (-1)*10^4 $c = $c / (1e-4); # / 10^(-4) $d = $d / pow(10, -5); # / 10^(-5) var_dump($a, $b, $c, $d); ?>
int(-1) float(-1) float(100000000) float(1000000000)
7. Um eine Binärzahl erhöhen/verringern
Auch die Addition eines Integers/Floats mit einer Binärzahl ist möglich. Dazu wird die als String vorliegende Binärzahl zunächst in einen Dezimalwert umgerechnet, welcher anschließend zum Integer/Float addiert werden kann.
<?php $a = 1; $binary = bindec('0111'); // 7 $a = $a + $binary; var_dump($a); ?>
int(8)
Offensichtlich ist auch die Subtraktion von Binärzahlen möglich:
<?php $a = 10; $binary = bindec('0111'); // 7 $a = $a - $binary; var_dump($a); ?>
int(3)
8. Um eine Hexadezimalzahl erhöhen/verringern
Die Addition von Hexadezimalzahlen erfolgt genauso wie die Addition von Binärzahlen. Zum Definieren der Hexadezimalzahl muss diesmal allerdings keine Funktion verwendet werden, da für diesen Vorgang bereits eine feste Syntax in PHP existiert. Der Hexadezimalzahl muss nur ein „0x” vorangestellt werden, dann kann man sie genauso definieren wie Dezimalwerte:
<?php $a = 1; $hex = 0x0F; // 15 $a = $a + $hex; var_dump($a); ?>
int(16)
Und natürlich ist wieder auch die Subtraktion möglich:
<?php $a = 17; $hex = 0x0F; // 15 $a = $a - $hex; var_dump($a); ?>
int(2)