poniedziałek,
Inkrementacja i dekrementacja
Operatory inkrementacji i dekrementacji występują w wielu językach programowania, także w języku PHP. Inkrementacja (łac. incrementum, wzrost) powoduje zwiększenie wartości argumentu o jeden, dekrementacja (łac. decrementum, ubywanie, ubytek) zmniejsza wartość o jeden. Operatory zwiększania i zmniejszania wpływają tylko na liczby i łańcuchy. Występują w czterech postaciach: postinkrementacji, preinkrementacji, postdekrementacji i predekrementacji. Przedrostek „pre” oznacza, że operacja zostanie wykonana przed innymi operacjami w wyrażeniu, „post” zostanie wykonane po wyliczeniu wartości wyrażenia.
Inkrementacja
Operator inkrementacji to dwa znaki plus (++).
$i = 5;
$i++;
echo $i; // 6
Poniżej zaprezentowano równoważną operację zrealizowaną bez użycia operatora inkrementacji.
$i = 5;
$i = $i + 1;
echo $i; // 6
Dekrementacja
Operator dekrementacji to dwa znaki minus (--).
$i = 5;
$i--;
echo $i; // 4
W kolejnym przykładzie zaprezentowano równoważną operację zrealizowaną bez użycia operatora dekrementacji.
$i = 5;
$i = $i - 1;
echo $i; // 4
Post i pre
Operatory inkrementacji i dekrementacji występują w czterech postaciach: postinkrementacji, preinkrementacji, postdekrementacji i predekrementacji.
$i = 5;
echo $i++; // 5
echo $i; // 6
W pierwszym wywołaniu echo wyświetli się liczba 5, ponieważ zastosowano postinkrementację. Najpierw wykonana została instrukcja echo, a dopiero później wartość zmiennej została zwiększona o jeden, co jest widoczne w drugim wywołaniu instrukcji echo.
$i = 5;
echo ++$i; // 6
echo $i; // 6
Przy zastosowaniu preinkrementacji obydwa wywołania instrukcji echo wyświetlą liczbę 6.
Podobne różnice występują podczas korzystania z postdekrementacji i predekrementacji.
Inkrementacja i łańcuchy znaków
Operator inkrementacji może wpływać także na zmienne znakowe. Wartość zmiennej zmienia się zgodnie z kolejnością znaków w tablicy ASCII.
$i = 'a';
echo ++$i; // b
Inkrementację można stosować także na łańcuchu kilku znaków.
$i = 'ckziu-01';
echo ++$i; // ckziu-02
Inkrementacja wykonywana jest „od końca”, w przykładzie „zwiększenie” dotyczy ostatniego znaku.
$i = '1-ckziu';
echo ++$i; // 1-ckziv
Próba zmniejszania zmiennej znakowej jest ignorowana przez interpreter, w przypadku łańcuchów znaków działa jedynie inkrementacja.
$i = 'ckziu-2';
echo --$i; // ckziu-2