PHP поддържа предварително и последващо-инкрементиращи и декрементиращи оператори. Операторите за инкрементиране (нарастване) увеличават стойността на дадена променлива с една единица и декрементиране (намаляване) намаляването на стойността на дадена променлива с една единица.
Операторът за инкрементиране се записва чрез два плюса: ++
Операторът за декрементиране се записва чрез два минуса: –
Съществуват два вида оператори за инкрементиране и декрементиране – префиксни и постфиксни (за краткост пре- и пост-):
++$promenliva префиксно инкрементиране
–$promenliva префиксно декрементиране
$promenliva++ постфиксно инкрементиране
$promenliva– постфиксно декрементиране
Т.е. пре- операторите се различават от пост- операторите по мястото, където се поставят знаците ++ и –.
Действието и на двата оператора за инкрементиране (пре- и пост-) се изразява в добавяне на единица към стойността на променливата, към която са прикрепени.
Действието и на двата оператора за декрементиране (пре- и пост-) се изразява в отнемане на една единица от стойността на променливата, към която са прикрепени.
Разликата между пре- и пост- операторите е, че при пре- операторите първо се извършва аритметичната операция (увеличаване или намаляване на стойността на променливата с единица) и след това се връща резултата, а при пост- операторите първо се връща резултат (стойността на променливата), а едва след това стойността се увеличава или намалява с единица.
Пример за пре-инкрементиране:
<?php
$prom1 = 100;
$prom1 = ++$prom1;
echo "Резултатът от пре-инкрементирането е $prom1";
// Връща резултат 101
?>
Горният код ще върне резултат 101, тъй като чрез оператора за префиксно инкрементиране добавихме единица към стойността на променливата $prom1.
Същия резултат ще получим и от кода:
<?php
$prom1 = 100;
++$prom1;
echo "Резултатът от пре-инкрементирането е $prom1";
// Връща резултат 101
?>
Абсолютно същия резултат като от горния код ще получим ако използваме в същия контекст и оператора за пост-инкрементиране:
<?php
$prom1 = 100;
$prom1++;
echo "Резултатът от пост-инкрементирането е $prom1";
// Връща резултат 101
?>
Ако обаче заместим пре-инкрементирането от първия пример с пост-инкрементирането от горния пример, тогава резултатът няма да е 101, а 100:
<?php
$prom1 = 100;
$prom1 = $prom1++;
echo "Резултатът от пост-инкрементирането е $prom1";
// Връща резултат 100
?>
Това е така, защото при пре-инкрементиране първо се увеличава стойността на променливата с единица и след това се връща резултата, а при пост-инкрементиране първо се връща резултат (стойността на променливата), а едва след това стойността се увеличава с единица. За да може да получим резултата 101 в горния контекст трябва да напишем:
<?php
$prom1 = 100;
$prom1++;
$prom1 = $prom1++;
echo "Резултатът от пост-инкрементирането е $prom1";
// Връща резултат 101
?>
Операторите за декрементиране работят по аналогичен начин.
Операторите за инкрементиране и декрементиране не оказват влияние върху булеви стойности (истина и неистина) и не извеждат никакъв резултат.
Стойностите на променливи, съставени от букви, могат да бъдат инкрементирани, но не могат да бъдат декрементирани.
Стойността null не може да бъде декрементирана, но може да бъде инкрементирана, при което се връща резултат 1.
В PHP съществуват няколко вида оператори. Основните от тях са:
⇒ Оператори в PHP (аритметични, за присвояване)
⇒ Оператори за сравнение и логически оператори в PHP
⇒ Оператори за инкрементиране и декрементиране в PHP