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";