Inkrementacja to zwiększenie wartości zmiennej o 1, a dekrementacja — zmniejszenie jej o 1. W PHP służą do tego operatory:

++— zwiększa wartość zmiennej o1,--— zmniejsza wartość zmiennej o1.
Operatory te są najczęściej używane do sterowania pętlami i zliczania. Trafiają się w pytaniach egzaminacyjnych z kwalifikacji INF.03 (Tworzenie i administrowanie stronami i aplikacjami internetowymi oraz bazami danych) — najczęściej w kontekście wyniku działania pętli for lub do…while.
Operator inkrementacji ++
Zapis:
$a++;
jest równoważny:
$a = $a + 1;
$a += 1;
Przykład:
$a = 1;
$a++;
echo $a; // 2
Operator dekrementacji --
Zapis:
$a--;
jest równoważny:
$a = $a - 1;
$a -= 1;
Przykład:
$a = 5;
$a--;
echo $a; // 4
Preinkrementacja i postinkrementacja
Operatory mogą występować przed lub po zmiennej:
++$a; // preinkrementacja
$a++; // postinkrementacja
Jeśli operator jest użyty jako osobna instrukcja, efekt końcowy jest taki sam — wartość zmiennej zwiększa się o 1. Różnica pojawia się dopiero w większym wyrażeniu:
$a = 1;
$b = $a++; // $b = 1, potem $a = 2 (post — najpierw użyj, potem +1)
$a = 1;
$b = ++$a; // najpierw $a = 2, potem $b = 2 (pre — najpierw +1, potem użyj)
Analogicznie działa dekrementacja: --$a zmniejsza przed użyciem wartości, $a-- po użyciu.
Przykład sekwencji instrukcji
$a = 1;
$a++; // $a = 2
$a += 10; // $a = 12
--$a; // $a = 11
Po wykonaniu zmienna $a ma wartość 11.
Inkrementacja w pętli for
Najczęstsze zastosowanie ++ w PHP to sterowanie pętlą for:
for ($i = 0; $i <= 10; $i++) {
echo $i . " ";
}
Ile razy wykona się pętla?
Pętla wykonuje się dopóki warunek jest spełniony. Tutaj $i zaczyna od 0 i rośnie po jeden. Warunek $i <= 10 jest prawdziwy dla wartości 0, 1, 2, …, 10 — czyli pętla wykona się 11 razy.
Zasada: dla for ($i = a; $i <= b; $i++) liczba iteracji wynosi b - a + 1. Uważaj na różnicę:
$i <= 10→ 11 iteracji (0…10),$i < 10→ 10 iteracji (0…9).
Co wypisze pętla?
Przy określaniu, co wypisze pętla, śledzi się wartość zmiennej kontrolnej w każdym przebiegu. Dla for ($i = 1; $i <= 5; $i++) echo $i*2 . " "; wynikiem będzie 2 4 6 8 10.
Pętla do…while z licznikiem
W zadaniach często pojawia się pętla do…while, w której licznik narasta, a warunek sprawdza sumę:
$a = $x = 0;
do {
$a++;
$x = $x + $a;
} while ($x != 21);
Trzeba prześledzić iteracje krok po kroku:
| iteracja | $a | $x po dodaniu |
|---|---|---|
| 1 | 1 | 0 + 1 = 1 |
| 2 | 2 | 1 + 2 = 3 |
| 3 | 3 | 3 + 3 = 6 |
| 4 | 4 | 6 + 4 = 10 |
| 5 | 5 | 10 + 5 = 15 |
| 6 | 6 | 15 + 6 = 21 — warunek $x != 21 przestaje być spełniony, koniec |
Pętla wykona się 6 razy. Charakterystyczne, że w do…while warunek jest sprawdzany po wykonaniu bloku, więc pętla zawsze wykona się co najmniej raz.
Wypisanie n znaków — str_repeat
Jeżeli pętlę z inkrementacją używa się tylko po to, żeby wypisać n powtórzeń tego samego znaku (np. n znaków @), w PHP istnieje gotowa funkcja str_repeat:
echo str_repeat("@", $n);
To krótsza i czytelniejsza alternatywa dla pętli for z licznikiem. Jeśli pytanie brzmi „jaką funkcją wyświetlić ciąg n znaków @", odpowiedzią jest str_repeat.
Częste pomyłki — nie myl tego!
$a++≠++$a— jako samodzielna instrukcja dają ten sam efekt, ale w wyrażeniu typu$b = $a++różnią się wynikiem.$a++≠$a + 1—$a++zmienia wartość zmiennej,$a + 1tylko wylicza, nie zmieniając$a.for ($i = 0; $i <= 10; $i++)to 11 iteracji, a nie 10 —<=wlicza wartość 10 do zakresu.do…whilezawsze wykona się co najmniej raz — warunek jest sprawdzany na końcu, w odróżnieniu odwhile, gdzie sprawdzany jest na początku.echo n znakówto nie pętla, tylkostr_repeat— najprostsza poprawna odpowiedź na egzaminie.- postdekrementacja w wyrażeniu zwraca starą wartość —
$b = $a--daje$b = $a(starą), a$adopiero potem maleje.
Najważniejsze do zapamiętania
W PHP $a++ jest równoważne zapisom $a += 1 i $a = $a + 1. Operator może być przed (++$a — pre) lub po ($a++ — post) zmiennej, a różnica liczy się tylko w wyrażeniach. W pętli for ($i = a; $i <= b; $i++) liczba iteracji wynosi b - a + 1. Pętla do…while zawsze wykona się co najmniej raz. Do wypisania n powtórzeń znaku użyj funkcji str_repeat.