Kurs PHP – operatory inkrementacji i dekrementacji

21-02-2023

W ramach tej lekcji dowiesz się czym jest inkrementacja i dekrementacja. Jest to bardzo często wykorzystywana rzecz w pracy programisty, więc warto dobrze zrozumieć różnice i na czym to polega. W razie pytań napisz komentarz 😉

Inkrementacja

Inkrementację dzielimy na 2 typy post-inkrementację i pre-inkrementację.

Post-inkrementacja

Ma za zadanie zwiększyć wartość zmiennej o 1. Działa ona tylko na zmiennych liczbowych oraz tekście. Z tym, że w praktyce nie spotkałam się, aby ktoś używał tych operatorów na tekście, więc to potraktuj jako ciekawostkę, że tak po prostu można 😉

Post-inkrementacja od pre-inkrementacji różni się tym, że w post-inkrementacji zwracana jest aktualna wartość zmiennej, a dopiero potem podnoszona wartość zmiennej o 1. Natomiast w pre-inkrementacji najpierw zmienna zwiększa wartość o jeden.

No dobra, trochę to brzmi zawile, więc przejdźmy do przykładu.

<?php
$variable = 5;

echo "Zmienna ma teraz wartość: {$variable}\n";
echo "Zmienna ma NADAL wartość: " . $variable++ . "\n";
echo "Zmienna ma teraz wartość: {$variable}\n";

Wynik:

Zmienna ma teraz wartość: 5
Zmienna ma NADAL wartość: 5
Zmienna ma teraz wartość: 6

Tak jak widzisz, w wyniku do funkcji echo została zwrócona liczba 5. Dopiero w kolejnej linii zmienna ma wartość 6. Czyli najpierw zwróciła się pierwotna wartość zmiennej, a potem dopiero jej wartość zwiększyła się o 1.

Pre-inkrementacja

Pre-inkrementacja od post-inkrementacji różni kolejność. Najpierw zmienna zwiększa wartość o 1, a dopiero potem zwracana jest wartość zmiennej.

W praktyce:

<?php
$variable = 5;

echo "Zmienna ma teraz wartość: {$variable}\n";
echo "Zmienna ma teraz wartość: " . ++$variable . "\n";
echo "Zmienna ma teraz wartość: {$variable}\n";

Wynik:

Zmienna ma teraz wartość: 5
Zmienna ma teraz wartość: 6
Zmienna ma teraz wartość: 6

Tak jak widzisz w drugiej linii mamy inny wynik. Mamy już 6, a nie 5.

Dekrementacja

Główna różnica między dekrementacją, a inkrementacją jest taka, że w inkrementacji zmienna zwiększa swoją wartość o 1, a w dekrementacji zmniejsza swoją wartość o 1.

Post-dekrementacja

<?php
$variable = 5;

echo "Zmienna ma teraz wartość: {$variable}\n";
echo "Zmienna ma NADAL wartość: " . $variable-- . "\n";
echo "Zmienna ma teraz wartość: {$variable}\n";

Wynik:

Zmienna ma teraz wartość: 5
Zmienna ma NADAL wartość: 5
Zmienna ma teraz wartość: 4

Pre-inkrementacja

<?php
$variable = 5;

echo "Zmienna ma teraz wartość: {$variable}\n";
echo "Zmienna ma teraz wartość: " . --$variable . "\n";
echo "Zmienna ma teraz wartość: {$variable}\n";

Wynik:

Zmienna ma teraz wartość: 5
Zmienna ma teraz wartość: 4
Zmienna ma teraz wartość: 4

Liczby zmiennoprzecinkowe i teksty

Tak jak wspomniałam inkrementacja i dekrementacja odnosi się ogólnie do liczb więc w tym też liczb zmiennoprzecinkowych, oraz do tekstów.

Liczby zmiennoprzecinkowe

Tutaj nie ma dużego zaskoczenia, zasada działania jest identyczna jak przy liczbach całkowitych👇

<?php
$variable = 5.12;

echo "Zmienna ma teraz wartość: {$variable}\n";
echo "Zmienna ma teraz wartość: " . $variable++ . "\n";
echo "Zmienna ma teraz wartość: {$variable}\n";

Wynik:

Zmienna ma teraz wartość: 5.12
Zmienna ma teraz wartość: 5.12
Zmienna ma teraz wartość: 6.12

Teksty

To może być, zaskoczenie, ale PHP radzi sobie z takimi operacjami na tekście. Co istotne, nie działa to ze wszystkimi literami. Wspierane są tylko litery a-z A-Z z wyłączeniem polskich liter. Działa to również w połączeniu liter i liczb.

Ważne
Teksty działają tylko i wyłącznie z inkrementacją. Nie reagują na dekrementację.

<?php
$variable = 'ab';

echo "Zmienna ma teraz wartość: {$variable}\n";
echo "Zmienna ma teraz wartość: " . $variable++ . "\n";
echo "Zmienna ma teraz wartość: {$variable}\n";

$variable = 'ab00';

echo "Zmienna ma teraz wartość: {$variable}\n";
echo "Zmienna ma teraz wartość: " . $variable++ . "\n";
echo "Zmienna ma teraz wartość: {$variable}\n";

Wynik:

Zmienna ma teraz wartość: ab
Zmienna ma teraz wartość: ab
Zmienna ma teraz wartość: ac
Zmienna ma teraz wartość: ab00
Zmienna ma teraz wartość: ab00
Zmienna ma teraz wartość: ab01

Ćwiczenia

W każdym z poniższych ćwiczeń spójrz na kod w zadaniu i zastanów się jaki Twoim zdaniem zwróci wynik. Następnie uruchom ten kod i sprawdź czy masz rację 🙂

1.1.

<?php
$variable = 9.9;

echo "Zmienna ma teraz wartość: " . $variable++ . "\n";
echo "Zmienna ma teraz wartość: " . $variable-- . "\n";
echo "Zmienna ma teraz wartość: " . $variable-- . "\n";
echo "Zmienna ma teraz wartość: " . --$variable . "\n";
echo "Zmienna ma teraz wartość: " . ++$variable . "\n";
echo "Zmienna ma teraz wartość: {$variable}\n";

1.2.

<?php
$variable = 'ab';

echo "Zmienna ma teraz wartość: " . $variable++ . "\n";
echo "Zmienna ma teraz wartość: " . $variable++ . "\n";
echo "Zmienna ma teraz wartość: {$variable}\n";

1.3.

<?php
$variable = 'ab';

echo "Zmienna ma teraz wartość: " . $variable++ . "\n";
echo "Zmienna ma teraz wartość: " . $variable-- . "\n";
echo "Zmienna ma teraz wartość: " . $variable-- . "\n";
echo "Zmienna ma teraz wartość: " . --$variable . "\n";
echo "Zmienna ma teraz wartość: " . ++$variable . "\n";
echo "Zmienna ma teraz wartość: {$variable}\n";

 

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.