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 dann $a um eins. |
--$a | Prä-Dekrement | Vermindert $a um eins, und gibt dann $a zurück. |
$a-- | Post-Dekrement | Gibt $a zurück, und erniedrigt dann $a 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.