PHP поддържа предварително и последващо-инкрементиращи и декрементиращи оператори в стил C.
Забележка: Операторите за инкрементиране (нарастване) и декрементиране (намаляване) не влияят на булеви стойности. Декрементирането на NULL стойности също няма ефект, но инкрементирането им дава резултат 1.
Пример | Наименование | Ефект |
---|---|---|
++$a | Предварително инкрементиране | Увеличава $a с едно, след което връща $a. |
$a++ | Последващо инкрементиране | Връща $a, след което увеличава $a с едно. |
--$a | Предварително декрементиране | Намалява $a с едно, след което връща $a. |
$a-- | Последващо декрементиране | Връща $a, след което намалява $a с едно. |
Ето прост примерен скрипт:
<?php
echo "<h3>Последващо инкрементиране</h3>";
$a = 5;
echo "Би трябвало да бъде 5: " . $a++ . "<br />\n";
echo "Би трябвало да бъде 6: " . $a . "<br />\n";
echo "<h3>Предварително инкрементиране</h3>";
$a = 5;
echo "Би трябвало да бъде 6: " . ++$a . "<br />\n";
echo "Би трябвало да бъде 6: " . $a . "<br />\n";
echo "<h3>Последващо декрементиране</h3>";
$a = 5;
echo "Би трябвало да бъде 5: " . $a-- . "<br />\n";
echo "Би трябвало да бъде 4: " . $a . "<br />\n";
echo "<h3>Предварително декрементиране</h3>";
$a = 5;
echo "Би трябвало да бъде 4: " . --$a . "<br />\n";
echo "Би трябвало да бъде 4: " . $a . "<br />\n";
?>
PHP следва конвенцията на Perl, когато работи с аритметически операции върху символни променливи, а не тази на C. Например, в Perl 'Z'+1 се превръща в 'AA', докато в C 'Z'+1 се превръща в '[' ( ord('Z') == 90, ord('[') == 91 ). Забележете, че символните променливи могат да бъдат инкрементирани, но не и декрементирани и дори тогава се поддържат единствено знаци в чист ASCII (a-z и A-Z).
Example #1 Аритетмически операции върху символни променливи
<?php
$i = 'W';
for ($n=0; $n<6; $n++) {
echo ++$i . "\n";
}
?>
Примерът по-горе ще изведе:
X Y Z AA AB AC
Инкрементирането или декрементирането на булеви стойности няма ефект.