Operatory arytmetyczne w PHP
W PHP operatory służą do wykonywania działań na zmiennych. Jest to zagadnienie dosyć proste, ale w pewnych przypadkach bywa dosyć ciekawe. Na tych właśnie przypadkach będę chciał się skupić. Dla porządku przedstawiam tabelkę zawierającą operatory arytmetyczne z przykładami ich zastosowania.
operator | przeprowadzana operacja |
---|---|
+ | dodawanie $a=$b+3; |
- | odejmowanie $a=$b-3; |
* | mnożenie $a=$b*3; |
/ | dzielenie $a=$b/3; |
% | dzielenie modulo (zwraca liczbę całkowitą stanowiącą resztę z dzielenia) |
++ | inkrementacja $a++ ( dodaje do zmiennej wartość 1) |
–– | dekrementacja $a––(odejmuje od zmiennej wartość 1) |
Myślę, że 4 pierwsze operatory nie wymagają żadnych wyjaśnień. Kolejny operator % czyli dzieleni modulo wyjaśnię na dodatkowym przykładzie. Załóżmy, że mamy do wyświetlenia na stronie 37 ikonek. Chcemy to zrobić w tabelce mającej 4 kolumny. Od razu widać, że ostatni wiersz tabeli nie będzie wypełniony do końca. Aby tabelka wyglądała przyzwoicie, musimy wiedzieć ile pustych komórek należy umieścić w ostatnim wierszu. Tę wartość możemy policzyć np. w taki sposób:
<?php $elementy = array('ikona1.png', 'ikona2.png', ..., 'ikona37.png'); //tablica z 37 ikonkami $liczba_kolumn = 4; $liczba_pustych_komorek_na_w_ostatnim_wierszu = $liczba_kolumn - count($elementy) % $liczba_kolumn; ?> |
Mam tablicę $elementy z 37 ikonkami i zmienną $liczba_kolumn. W kolejnej instrukcji funkcją count() obliczam ilość elementów tablicy i otrzymuję wartość 37. Na otrzymanym wyniku wykonuję operację modulo (%), która w wyniku daje mi wartość 1. Odejmuję tę wartość od liczby kolumn i otrzymuję ilość komórek, które muszę uzupełnić.
Kolejne dwa operatory to inkrementacja i dekrementacja. Obydwa mogą występować zarówno przed, jak i po zmiennej. Jeżeli występują przed, to wartość zmiennej jest najpierw zmieniana przez operator, a dopiero potem nowa wartość jest wykorzystywana. Jeżeli operator jest umieszczony za zmienną, to najpierw wykorzystywana jest wartość zmiennej, a dopiero później działa operator inkrementacji lub dekrementacji.
Doskonale zdaję sobie sprawę, że powyższe wyjaśnienie może być mało czytelne, dlatego posłużę się ponownie przykładem:
<?php $a=5; echo $a++; //najpierw wyświetlana jest wartość zmiennej - czyli 5, a następnie operator '++' zmienia jej wartość do 6. echo $a; //wyświetlana jest nowa wartość - czyli 6 echo ++$a; //ty razem najpierw zwiększa się wartość zmiennej do 7 i ta właśnie nowa wartość jest wyświetlana ?> |
Myślę, że teraz wszyscy już doskonale rozumieją na czym to polega. Jeżeli ktoś chciałby się sprawdzić, to proszę policzyć, ale bez komputera, jaki wynik wyświetli poniższy kod. Wyniki proszę podawać w komentarzach. Jeżeli zetknąłeś się z tym tematem po raz pierwszy, nie przejmuj się, jeżeli sprawi Ci trudność. Na jednym ze szkoleń, które ostatnio prowadziłem, przy 8 uczestnikach, padło 9 różnych odpowiedzi.
<?php $a=8; echo $a--+5*--$a+3*$a--+$a++-2*$a; ?> |
Tagi: count(), dekrementacja, inkrementacja, modulo, operatory, PHP
Mi wychodzi 8
w tabeli masz bÅ‚Ä…d w ostatnim wierszu, jest jeden minus, a powinno być dwa czyli „dekrementacja $a–(odejmuje od zmiennej wartość 1)” i w tym zdaniu też powinny być dwa minusy za $a
Dzięki za uwagę. Tak naprawdę były dwa minusy. Nie wiem dlaczego przeglądarka połączyła je w jeden. Dopiero zamiana minusów na encje dała zadowalający efekt.
Aleś wymyślił! Liczyłem 5 razy. Raz wyszło 46, raz 52, dwa razy 57 i raz się pogubiłem kompletnie.
Hej.
Czy to 39?
Widzę, że macie problemy. Wyjaśnienie zadania w następnym artykule.
Pozdrawiam wszystkich liczÄ…cych
wydaje mi się, że 56
oj, jednak nie… ;]