Inkrement- bzw. Dekrementoperatoren
PHP unterstützt Prä- und Post-Inkrement- und Dekrementoperatoren im Stil der Programmiersprache C.
Hinweis: Die Inkrement-/Dekrement-Operatoren wirken nur auf Zahlen und Zeichenketten. Bei Arrays, Objekten, Booleans und Ressourcen wirken sie nicht. Das Dekrementieren von
null
Werten hat ebenfalls keine Wirkung, aber sie zu Inkrementieren ergibt1
.
Beispiel | Name | Auswirkung |
---|---|---|
++$a | Prä-Inkrement | Erhöht $a um eins und gibt dann $a zurück. |
$a++ | Post-Inkrement | Gibt $a zurück und erhöht $a dann um eins. |
--$a | Prä-Dekrement | Vermindert $a um eins, und gibt dann $a zurück. |
$a-- | Post-Dekrement | Gibt $a zurück, und vermindert $a dann um eins. |
Ein einfaches Beispiel-Skript:
<?php
echo "<h3>Post-Inkrement</h3>";
$a = 5;
echo "Sollte 5 sein: " . $a++ . "<br />\n";
echo "Sollte 6 sein: " . $a . "<br />\n";
echo "<h3>Pre-Inkrement</h3>";
$a = 5;
echo "Sollte 6 sein: " . ++$a . "<br />\n";
echo "Sollte 6 sein: " . $a . "<br />\n";
echo "<h3>Post-Dekrement</h3>";
$a = 5;
echo "Sollte 5 sein: " . $a-- . "<br />\n";
echo "Sollte 4 sein: " . $a . "<br />\n";
echo "<h3>Pre-Dekrement</h3>";
$a = 5;
echo "Sollte 4 sein: " . --$a . "<br />\n";
echo "Sollte 4 sein: " . $a . "<br />\n";
?>
PHP folgt bei der Behandlung arithmetischer Operationen auf
Zeichenvariablen der Perl-Konvention und nicht der von C. Zum Beispiel
ändert in PHP und Perl $a = 'Z'; $a++;
$a
zu 'AA'
, während a =
'Z'; a++;
in C a
zu '['
ändert. (Der ASCII-Wert von 'Z'
ist 90, der ASCII-Wert
von '['
ist 91). Es ist zu beachten, dass
Zeichenvariablen inkrementiert, aber nicht dekrementiert werden können,
und dass nur einfache ASCII-Buchstaben und Ziffern (a-z, A-Z, 0-9)
unterstützt werden. Das Inkrementieren oder Dekrementieren anderer
Zeichenvariablen hat keine Auswirkung; die ursprüngliche Zeichenkette wird
nicht verändert.
Beispiel #1 Arithmetrische Operationen an Zeichenvariablen
<?php
echo '== Buchstaben ==' . PHP_EOL;
$s = 'W';
for ($n=0; $n<6; $n++) {
echo ++$s . PHP_EOL;
}
// Ziffernzeichen verhalten sich anders
echo '== Ziffern ==' . PHP_EOL;
$d = 'A8';
for ($n=0; $n<6; $n++) {
echo ++$d . PHP_EOL;
}
$d = 'A08';
for ($n=0; $n<6; $n++) {
echo ++$d . PHP_EOL;
}
?>
Das oben gezeigte Beispiel erzeugt folgende Ausgabe:
== Buchstaben == X Y Z AA AB AC == Ziffern == A9 B0 B1 B2 B3 B4 A09 A10 A11 A12 A13 A14
Das Inkrementieren oder Dekrementieren Boolescher Variablen hat keine Auswirkung.